MyVlookup - Thay Thế Những Gì Vlookup Chưa Làm Được

  • Thread starter BlogExcel.Com
  • Ngày gửi
BlogExcel.Com

BlogExcel.Com

www.blogexcel.com
7/9/17
37
17
8
www.blogexcel.com
Mình từng giới thiệu với các bạn cách tìm kiếm tương tự như hàm Vlookup nhưng sẽ hiển thị tất cả các giá trị tìm được thay vì 1 giá trị đầu tiên như Vlookup, nhưng ở bài viết đó thì sử dụng các công thức kết hợp với nhau nên có thể gây khó khăn cho nhiều bạn khi chưa thành thạo cách sử dụng của từng hàm cụ thể.
Do vậy ở bài viết này mình sẽ giới thiệu với các bạn một cách đơn giản hơn rất nhiều, đó là sử dụng Code VBA, Code thì có sẵn rồi nên các bạn cứ việc sử dụng, chứ đừng có nghe nhắc tới VBA là chạy mất dép nhé.

Như các bạn thấy ở đây. Ở bên Bảng Tính thì có các Mã Hàng, và cột Hóa Đơn, còn phía bên Giá Trị DòMã Hàng và số Hóa Đơn. Có rất nhiều mã hàng có nhiều hơn hai số hóa đơn.

Nếu các bạn dò theo cách thông thường là dùng hàm Vlookup như mình ví dụ cho các bạn thấy ở đây thì kết quả sẽ trả về đúng một giá trị mà nó tìm thấy đầu tiên.
Trong khi đó bạn thấy Mã Hàng A01 xuất hiện tới 4 lần với 4 số hóa đơn khác nhau. Nên nếu dò như vậy thì sẽ cho kết quả không chính xác.

Chính vì lý do đó nên mình sẽ giới thiệu với các bạn một hàm tự định nghĩa sẽ thay thế Vlookup làm điều này.
Vì sẽ dùng VBA nên đầu tiên các bạn kích hoạt VBA lên bằng cách vào Developer/Visual Basic. Hoặc nhấn phím tắt Alt + F11

Khi chương trình VBA chạy các bạn chọn Insert/Module

Sau đó thì Copy đoạn Code bên dưới và dán vào khung soạn thảo của VBA
Mã Code:

Function MYVLOOKUP(lookupval, lookuprange As Range, indexcol As Long)
Dim r As Range
Dim result As String
result = ""
For Each r In lookuprange
If r = lookupval Then
result = result & " " & r.Offset(0, indexcol - 1)
End If
Next r
MYVLOOKUP = result
End Function


Sau đó Click vào biểu tượng hình tam giác màu xanh như hình.

Đặt tên cho Macros khi được hỏi. Các bạn nhớ đặt tên cho chính xác là MYVLOOKUP dùm mình nhé, viết hóa như vậy luôn, không thì nó không chạy được đâu. Sau đó chọn Create

Nhấn OK khi xuất hiện thông báo này.

Quay trở lại File Excel lúc nãy, bây giờ ở ô C3 các bạn gõ công thức như sau:
=MYVLOOKUP(B3;F3:F21;2)
Mình xin giải thích một chút:
- MYVLOOKUP: Công thức tự định nghĩa dựa vào Code VBA
- B3: Giá trị Mã Hàng cần dò
- F3:F21: Giá trị dùng để dò
- 2: Chính là cột thứ 2 chưa số Hóa Đơn cần để dò, các bạn cứ đếm từ Vị trí F3:F21 qua bao nhiêu cột thì chọn bấy nhiêu nhé.

Và đây chính là kết quả tìm được sau khi sử dụng hàm tự tạo nêu trên. Bạn thấy Mã Hàng A01 mình có bôi xanh lên cho dễ quan sát xuất hiện tới 4 số hóa đơn và được dò tìm đầy đủ rồi nhé.

Copy công thức xuống các ô còn lại ta được kết quả như sau

Nếu các bạn muốn sử dụng công thức này cho các bảng tính khác như một hàm có sẵn trong Excel thì hãy tạo Add-Ins cho nó mà sử dụng nhé, bạn nào chưa biết có thể xem ở bài viết tổng quan về Add-Ins mà mình đã giới thiệu trước đó
Như vậy là mình đã giới thiệu với các bạn một cách đầy đủ về việc dò tìm với nhiều kết quả. Hy vọng sẽ giúp ích cho các bạn hơn trong công việc.
Chúc các bạn thành công.
Nguồn: www.blogexcel.com
 
Khóa học Quản trị dòng tiền
hocviecchuaxong

hocviecchuaxong

Cao cấp
8/6/16
1,952
748
113
35
Cám ơn bạn, cái này đúng cái đang cần.
 
D

danissimo

Guest
29/8/09
1
0
1
hà nội
Có thể thêm dấu phẩy giữa các hóa đơn (trừ hóa đơn cuối cùng được ko nhỉ?
Tks!
 
BlogExcel.Com

BlogExcel.Com

www.blogexcel.com
7/9/17
37
17
8
www.blogexcel.com
@danissimo Cái này phải Code thêm trong VBA bạn nhé. Hoặc bạn dò nó vào một ô nào đó rồi thêm , bằng cách dựa vào kết quả của ô phụ đó
 
Kaspersky

Kaspersky

Love Love Love
16/7/12
773
138
43
www.thuthuatexcel.com
Có thể thêm dấu phẩy giữa các hóa đơn (trừ hóa đơn cuối cùng được ko nhỉ?
Tks!
Bạn kết hợp hàm SUBSTITUTE, MID, MYVLOOKUP lại sẽ được kết quả như bạn muốn nhé
VD thế này:
1111.png
 

Xem nhiều

Webketoan Zalo OA