Thay đổi công thức Excel sang hàm Vba sử dụng WorkSheetFunction

Nội dung được viết bởi G-LEARNING

Trong bài viết này, blog.gitiho.com sẽ hướng dẫn các bạn cách chuyển công thức Excel sang hàm VBA sử dụng WorkSheetFunction một cách đơn giản nhất.

Khi tạo công thức, bạn gặp các vấn đề sau:

  • + Công thức quá dài.
  • + Có nhiều đoạn lặp lại.
  • + Công thức chạy quá chậm.
  • + Bạn lại đang võ vẽ cũng như tò mò về Vba.
  • + Trong Vba bạn muốn gọi một hàm giống hàm trong Excel.

Đây chính là lúc bạn thực hành dùng Vba đề viết hàm thay cho các công thức.

Excel cung cấp lớp WorkSheetFunction:

  • Chứa các hàm giống các hàm của Excel, ít phải suy nghĩ mà vẫn viết được.
  • Lớp này không thể tạo đối tượng mới.
  • Vba đã tạo sẵn đối tượng, truy cập Application.WorkSheetFunction.
  • Cấu trúc Application.WorkSheetFunction.TenHam(DanhSachDoiSo).
  • Hàm “IF” không có, thay vào đó dùng IIF hoặc câu lệnh IF.
  • Dùng WorkSheetFunction bạn sẽ thấy dễ dàng, và công thức rất trong sáng.

Xem thêm: Học vba ở đâu?

Cách khai thác lớp WorkSheetFunction, lấy hàm Match làm ví dụ:

  1.  Tạo một biến để gán đối tượng WorkSheetFunction( tùy chọn).
  2. Dùng Set để gán Application.WorkSheetFunction.
  3. Gọi hàm Bien=Application.WorkSheetFunction.TenHam(DanhSachDoiSo).

Tìm thông tin về hàm Match:

30_09_2016_09_09_06_0

+Ví dụ cách sử dụng hàm Match trong Vba.

30_09_2016_08_59_43_0

Help của hàm Match.

30_09_2016_09_14_53_0

Một số vấn đề ngoài lề:

Các hàm này trả lại kiểu Variant thì không sao, ngược lại nếu nguyên mẫu hàm trả lại kiểu cụ thể ( double chẳng hạn), nếu lỗi trong excel thì trả lại lỗi, còn trong vba nó sẽ tạo ra một lỗi, có thể gây dừng hàm. Do vậy nên chủ động bẫy lỗi, các hàm test lỗi của excel ( isna,…) cũng vô dụng trong trường hợp này.

30_09_2016_09_31_20_0

Dò tìm hai chiều với WorksheetFunction

Cho bài toán như trên, dò tìm hai chiều có tính trường hợp ngoại lệ. Ở đây ta đã có công thức nằm tại ô D6.

06_10_2016_08_29_30_0

Phân tích công thức ta được:

06_10_2016_08_37_38_0

Như trên hình ta thấy công thức trên phụ thuộc vào 4 đối số:

+ C6: Code.

+ $I$7:$L$10: BangDuLieu.

+ $H$7:$H$10: Row.

+ $I$6:$L$6: Col.

Học Excel kế toán ở Hà Nội

Bây giờ sẽ dùng Vba để định nghĩa công thức trên với tư cách một hàm, hàm “MyFunction”. Trong excel nhấn ALT+ F11, Insert->Module, một Module mới được tạo ra, mã nguồn vba sẽ được viết ở đây. Nhập code như hinh.

06_10_2016_09_03_55_0

  • Tên hàm: MyFunction, có thể đặt tùy ý, nhưng nên tránh như tên có sẵn như sum, if, day,…
  • Bốn đối số được để trong dấu ngoặc: Code, BangDuLieu, Row, Col.
  • Nhất quyết phải có dòng MyFunction=MotBieuThuc. Để trả lại kết quả cho hàm.
  • Nguyên mẫu các hàm Left, Right, Match, Index khá giống trong Excel.
  • Các chữ màu xanh là ghi chú, có thể bỏ qua không cần nhập.

Trong excel ta gõ công thức: =MyFunction(C6,$I$7:$L$10,$I$6:$L$6,$H$7:$H$10)

06_10_2016_09_18_36_0

MyFunction đã trở thành một hàm của Excel, với chức năng tính toán giống như công thức tại ô D6. So sánh kết quả ở hai cột D và côt E cho cùng một kết quả.

==> với WorksheetFunction, một chút sáng tạo, bạn có thể viết các hàm vba cho riêng mình, đơn giản mà mạnh mẽ.

Video minh họa.

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook… giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp…

Tác giả: Nguyễn Ngọc Thu Hiền

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Gitiho.com. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:

Đánh giá bài viết này

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu chỉ dùng Excel, bạn sẽ thường xuyên phải OT đến mỗi kỳ làm báo cáo, stress vì sai dữ liệu do nhập thủ công, hay gặp vấn đề các hàm load chậm do dữ liệu quá nặng,...

Có lẽ bạn đã từng nghe ở đâu đó về công cụ lập trình VBA trên Excel, giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,...

Nhưng bạn không dám nghĩ một ngày nào đó mình sẽ dùng VBA bởi vì mình không biết lập trình, sửa code và gỡ lỗi mã. Tin mình đi, bạn hoàn toàn có thể thành thạo công cụ này ngay cả khi không giỏi Excel, không biết lập trình với khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho.

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập khiến mọi thao tác thủ công trên Excel gần như được loại bỏ hoàn toàn. 

Hãy nhấn vào Học thử hoặc Đăng ký ngay để cảm nhận sự “vi diệu” mà VBA mang lại cho công việc của bạn nhé!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông