Tạo hàm tương tự Vlookup tìm trong nhiều bảng

Liên hệ QC

vhh038

Thành viên mới
Tham gia
9/10/10
Bài viết
9
Được thích
1
Em có 1 bài cần sử dụng hàm dò tìm vlookup tìm giá trị chính xác trong nhiều bảng dữ liệu có sẵn, hàm Vlookup hiện tại em chỉ tìm dc trong 1 bảng.

Cụ thể: ở Sheet 1 em có 1 bảng cần do tìm, ở 3 sheet khác em có 3 bảng dữ liệu (mỗi sheet 1 bảng). Nếu gom dữ liệu 3 bảng lại làm 1 thì ko có gì để nói, nhưng em lại ko biết viết hàm riêng, anh nào biết vấn đế này giúp đỡ em với.

+ Mỗi giá trị cần dò tìm chỉ có 1 kết quả duy nhất nằm ở 1 trong 3 bảng dữ liệu.

Em gửi kèm file mấy anh ví dụ dùm em luôn nha. Cám ơn mấy anh.
 

File đính kèm

  • BAI.xls
    21.5 KB · Đọc: 646
Thích hàm tự tạo ư?

C1: Hàm trong excel, như sau:

Bạn tô chọn vùng dữ liệu của 3 trang tính sau & gán cho chúng tương ứng ba cái tên, tôi ví dụ như DL_1, DL_2 & DL_3

Sau đó đùng công thức sau tại [C3] của trang đầu, dĩ nhiên:

Mã:
[CENTER][COLOR=purple][B]=IF(TYPE(VLOOKUP(B3,DL_1,2,0))=16,0,VLOOKUP(B3,DL_1,2,0))+IF(TYPE(VLOOKUP(B3,DL_2,2,0)) =16,0,VLOOKUP(B3,DL_2,2,0))+IF(TYPE(VLOOKUP(B3,DL_3,2,0))=16,0,VLOOKUP(B3,DL_3,2,0))[/B]
[/COLOR][/CENTER]
C2: Hàm tự tạo:OK?
 
Upvote 0
Em có 1 bài cần sử dụng hàm dò tìm vlookup tìm giá trị chính xác trong nhiều bảng dữ liệu có sẵn, hàm Vlookup hiện tại em chỉ tìm dc trong 1 bảng.

Cụ thể: ở Sheet 1 em có 1 bảng cần do tìm, ở 3 sheet khác em có 3 bảng dữ liệu (mỗi sheet 1 bảng). Nếu gom dữ liệu 3 bảng lại làm 1 thì ko có gì để nói, nhưng em lại ko biết viết hàm riêng, anh nào biết vấn đế này giúp đỡ em với.

+ Mỗi giá trị cần dò tìm chỉ có 1 kết quả duy nhất nằm ở 1 trong 3 bảng dữ liệu.

Em gửi kèm file mấy anh ví dụ dùm em luôn nha. Cám ơn mấy anh.
Làm thử vầy xem:
PHP:
Function MVlookUp(fRng As Range, sRng As Range, Col As Long)
  Dim Sh As Worksheet, tmpRng As Range
  MVlookUp = CVErr(xlErrNA)
  For Each Sh In ActiveWorkbook.Worksheets
    If Sh.Name <> fRng.Parent.Name Then
      Set tmpRng = Sh.Range(sRng.Address).Resize(, 1).Find(fRng, , xlValues, xlWhole)
      If Not tmpRng Is Nothing Then
        MVlookUp = tmpRng(, Col)
        Exit Function
      End If
    End If
  Next
End Function
Tại cell C3 của sheet1, gõ công thức =MVlookUp($B3,$B$2:$C$100,2) và kéo fill xuống
Hàm này tìm giá trị fRng trên tất cả các sheet, ngoài trừ sheet chứ fRng
 

File đính kèm

  • VlooUp_MutiSheets.xls
    42 KB · Đọc: 964
Upvote 0
Làm thử vầy xem:
PHP:
Function MVlookUp(fRng As Range, sRng As Range, Col As Long)
Dim Sh As Worksheet, tmpRng As Range
MVlookUp = CVErr(xlErrNA)
For Each Sh In ActiveWorkbook.Worksheets
If Sh.Name <> fRng.Parent.Name Then
Set tmpRng = Sh.Range(sRng.Address).Resize(, 1).Find(fRng, , xlValues, xlWhole)
If Not tmpRng Is Nothing Then
MVlookUp = tmpRng(, Col)
Exit Function
End If
End If
Next
End Function
Tại cell C3 của sheet1, gõ công thức =MVlookUp($B3,$B$2:$C$100,2) và kéo fill xuống
Hàm này tìm giá trị fRng trên tất cả các sheet, ngoài trừ sheet chứ fRng

Em đã làm dc rồi, rất đúng ý em, cám ơn anh nhiều nha.

Cám ơn bạn HYen17 nhiều nha.
 
Upvote 0
Làm thử vầy xem:
PHP:
Function MVlookUp(fRng As Range, sRng As Range, Col As Long)
  Dim Sh As Worksheet, tmpRng As Range
  MVlookUp = CVErr(xlErrNA)
  For Each Sh In ActiveWorkbook.Worksheets
    If Sh.Name <> fRng.Parent.Name Then
      Set tmpRng = Sh.Range(sRng.Address).Resize(, 1).Find(fRng, , xlValues, xlWhole)
      If Not tmpRng Is Nothing Then
        MVlookUp = tmpRng(, Col)
        Exit Function
      End If
    End If
  Next
End Function
Tại cell C3 của sheet1, gõ công thức =MVlookUp($B3,$B$2:$C$100,2) và kéo fill xuống
Hàm này tìm giá trị fRng trên tất cả các sheet, ngoài trừ sheet chứ fRng

Bác cho em hỏi thêm về hàm tự tạo này ạ. Nếu em muốn vlookup nhiều sheet từ workbook này sang workbook khác thì như thế nào ạ. Cụ thể là em có 1 workbook gồm rất nhiều sheet có cấu trúc gần giống nhau, em muốn vlookup giá trị trong các sheet đó và đưa về 1 workbook tổng hợp

Tiện thể em hỏi luôn, em không biết cách đính kèm file. Em mới tham gia GPE ạ :D
 
Upvote 0
Bác Ndu và bác Hyen cho em hỏi thêm một vấn đề nữa. Nếu giả sử có nhiều dữ liệu trùng nhau trong các bảng, ví dụ A001 có cả trong bảng DL_1, DL_2, DL_3, nhưng ta chỉ lấy 1 giá trị gần nhất và lớn hơn 0 (DL_1>DL_2>DL_3) thì sử dụng công thức hoặc hàm như thế nào ạ.
 

File đính kèm

  • BAI 2.xls
    44.5 KB · Đọc: 98
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử với cái ni xem răng

PHP:
Option Explicit
Function MVlookUpMin(fRng As Range, sRng As Range, Col As Long)
  Dim Sh As Worksheet, tmpRng As Range, Min_ As Double
  
For Each Sh In ActiveWorkbook.Worksheets
    If Sh.Name <> fRng.Parent.Name Then
      Set tmpRng = Sh.Range(sRng.Address).Resize(, 1).Find(fRng, , xlValues, xlWhole)
      If Not tmpRng Is Nothing Then
         If Min_ = 0 Then
            Min_ = tmpRng(, Col).Value
         Else
            If tmpRng(, Col).Value < Min_ Then Min_ = tmpRng(, Col).Value
         End If
      End If
    End If
  Next
  If Min_ > 0 Then MVlookUpMin = Min_ Else MVlookUpMin = ""
End Function

/(hi đó cú f/áp tại [D7] sẽ là
=MVlookUpMin(B7,$B$2:$C$99,2)
 
Upvote 0
Cảm ơn bác! về phần hàm em đã lập được như thế này:
IF(AND(TYPE(VLOOKUP($B$3;DL_1;2;0))=1;VLOOKUP($B$3;DL_1;2;0)>0);VLOOKUP($B$3;DL_1;2;0);IF(AND(TYPE(VLOOKUP($B$3;DL_2;2;0))=1;VLOOKUP($B$3;DL_2;2;0)>0);VLOOKUP($B$3;DL_2;2;0);IF(AND(TYPE(VLOOKUP($B$3;DL_3;2;0))=1;VLOOKUP($B$3;DL_3;2;0)>0);VLOOKUP($B$3;DL_3;2;0);"")))
Có thể áp dụng tương tự nếu thêm nhiều sheet đằng sau nữa ví dụ DL_4, DL_5 ....
Còn hàm tự tạo này chỉ áp dụng cho 3 sheet. Nếu thêm các sheet đằng sau nữa thì báo lỗi bác ạ.
Bác có thể sửa lại để áp dụng cho thêm các sheet đằng sau nữa không ạ?
 
Upvote 0
Mình xin đóng góp thêm 1 công thức tương tự khác nữa là:
IF(ISERROR(VLOOKUP(B3,DL_1,2,FALSE)=TRUE),IF(ISERROR(VLOOKUP(B3,DL_2,2,FALSE)=TRUE),IF(ISERROR(VLOOKUP(B3,DL_3,2,FALSE)=TRUE),""
,VLOOKUP(B3,DL_3,2,FALSE)),VLOOKUP(B3,DL_2,2,FALSE)),VLOOKUP(B3,DL_1,2,FALSE))
 
Upvote 0
Làm thử vầy xem:
PHP:
Function MVlookUp(fRng As Range, sRng As Range, Col As Long)
  Dim Sh As Worksheet, tmpRng As Range
  MVlookUp = CVErr(xlErrNA)
  For Each Sh In ActiveWorkbook.Worksheets
    If Sh.Name <> fRng.Parent.Name Then
      Set tmpRng = Sh.Range(sRng.Address).Resize(, 1).Find(fRng, , xlValues, xlWhole)
      If Not tmpRng Is Nothing Then
        MVlookUp = tmpRng(, Col)
        Exit Function
      End If
    End If
  Next
End Function
Tại cell C3 của sheet1, gõ công thức =MVlookUp($B3,$B$2:$C$100,2) và kéo fill xuống
Hàm này tìm giá trị fRng trên tất cả các sheet, ngoài trừ sheet chứ fRng
Xin lỗi em đào mồ topic tý ạ, chẳng là em muốn tìm kiếm trên 1 file excel khác ( chứ ko phải cùng 1 file như trong topic ạ) thì sửa làm sao ạ, em thử thay đường dẫn nhưng báo N/A, các bác giúp em với nha
 
Upvote 0
Trả về dạng text thì như thế nào vậy chị?
cái này chỉ trả về dạng số thôi.giúp em với.../-*+/
 
Upvote 0
Chào bác. Bác giúp em phần này với. Em không rành về excel chỉ làm được đến đây. Còn lại mong bác giúp một tay hoàn thiện nốt phần MVLOOKUP. Cảm ơn bác nhiều. Zalo và fb của em 0979463493
 

File đính kèm

  • Vay the chap 2.xlsx
    47.1 KB · Đọc: 6
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom