Thứ Sáu, 23 tháng 3, 2012

Dùng hàm VLOOKUP tìm dữ liệu trong nhiều Sheet


Thông thường chúng ta hay dùng hàm VLOOKUP , hoặc HLOOKUP , để tìm giá trị trong một bảng dữ liệu

nhưng nếu như bảng dữ liệu tại Sheet này không có phải chuyển sang bảng dữ liệu ở những Sheet khác để tìm kiếm thì cách viết công thức như sau :
Ví dụ hàm VLOOKUP chỉ trong một bảng của Sheet

=VLOOKUP(C1,$A$2:$B$25,2,0)

Hàm VLOOKUP tìm kiếm nhiều bảng tại những Sheet khác nhau

=IF(ISNA(VLOOKUP(C1,Sheet1!$A$2:$B$25,2,0)),IF(ISNA(VLOOKUP(C1,Sheet2!$A$2:$B$25,2,0)),
IF(ISNA(VLOOKUP(C1,Sheet3!$A$2:$B$25,2,0)),VLOOKUP(C1,Sheet3!$A$2:$B$25,2,0)),
VLOOKUP(C1,Sheet2!$A$2:$B$25,2,0)),VLOOKUP(C1,Sheet1!$A$2:$B$25,2,0))

Trong ví dụ trên được tìm kiếm qua 3 Sheet khác nhau .

Bạn cũng có thể dùng Macro tìm kiếm qua tất cả các Sheet . Macro viết như sau

Function VLOOKAllSheets(Look_Value As Variant, Tble_Array As Range, Col_num As Integer, Optional Range_look As Boolean)
Dim wSheet As Worksheet
Dim vFound
On Error Resume Next
    For Each wSheet In ActiveWorkbook.Worksheets
        With wSheet
        Set Tble_Array = .Range(Tble_Array.Address)
            vFound = WorksheetFunction.VLookup _
            (Look_Value, Tble_Array, _
            Col_num, Range_look)
        End With
        If Not IsEmpty(vFound) Then Exit For
    Next wSheet
    Set Tble_Array = Nothing
    VLOOKAllSheets = vFound
End Function

Công thức tìm kiếm trên với 3 Sheet trước đó có thể được viết như sau

=VLOOKAllSheets(C1,A1:B25,2,FALSE)

Không có nhận xét nào:

Đăng nhận xét