Vlookup lồng không ra kết quả (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Cá ngừ F1

( ͡° ͜ʖ ͡°)
Thành viên BQT
Moderator
Tham gia
1/1/08
Bài viết
2,579
Được thích
3,723
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Quan hệ.. và quan hệ..
Sau khi tham khảo 1 số anh/chị trên GPE e có làm Sub vlookup, việc tìm kiếm trực tiếp thì không vấn đề gì, tuy nhiên nếu lookup lồng thì chưa ra kết quả.. e có trình bầy chi tiết trong file..
Mong anh/chị giúpđỡ...
Mã:
Sub VlookUp()
Dim LookUpValue(), DesArr1(), DesArr2(), i As Long
Dim String1 As Range, String2 As String, String3 As Range
With Sheets("DATA")
   LookUpValue = .Range(.[F2], .[F65536].End(3)).Value
End With
ReDim DesArr1(1 To UBound(LookUpValue), 1 To 1)
ReDim DesArr2(1 To UBound(LookUpValue), 1 To 4)
For i = 1 To UBound(LookUpValue)
   Set String1 = Sheets("bao_cao").[A:A].Find(LookUpValue(i, 1), , , 1)
   If Not String1 Is Nothing Then
      Set String3 = Sheets("huong_dan").[AD:AD].Find(String1.Offset(, 3), , , 1)
      If Not String3 Is Nothing Then
         DesArr1(i, 1) = String1.Offset(, 1)
      End If
      DesArr2(i, 1) = String1.Offset(, 7)
      DesArr2(i, 2) = String1.Offset(, 8)
      DesArr2(i, 3) = String1.Offset(, 9)
      DesArr2(i, 4) = String1.Offset(, 5)
   End If
Next
Sheets("DATA").[AM2].Resize(i - 1) = DesArr1
Sheets("DATA").[AP2].Resize(i - 1, 4) = DesArr2
End Sub
 

File đính kèm

Bạn sửa đoạn
Mã:
        DesArr1(i, 1) = String1.Offset(, 1)
thành
Mã:
        DesArr1(i, 1) = String3.Offset(, 1)
 
Upvote 0
Bạn sửa đoạn
Mã:
        DesArr1(i, 1) = String1.Offset(, 1)
thành
Mã:
        DesArr1(i, 1) = String3.Offset(, 1)
ôi,ôi, mình ko xem kỹ dữ liệu,ở báo cáo nó thêm cái dấu cách vào đầu làm ko chạy được, loay hoay mãi, cảm ơn bạn nhé
P/S: ngoài phương thức FIND còn có cách nào hay không bạn ?
 
Upvote 0
ôi,ôi, mình ko xem kỹ dữ liệu,ở báo cáo nó thêm cái dấu cách vào đầu làm ko chạy được, loay hoay mãi, cảm ơn bạn nhé
P/S: ngoài phương thức FIND còn có cách nào hay không bạn ?
Ngoài phương thức Find thì bạn cũng có thể dùng đến WorksheetFunction.Vlookup. Tuy nhiên theo nhận định của tôi thì dùng Find hay hơn.
 
Upvote 0
Bạn kiểm tra lại xem tên sheet gốc có phải là huong_dan hay không và vùng điều kiện trong vùng có đúng hay không?

Ta có thể kiểm tra các giá trị như String1, String3 bằng cứa sổ Immediate hay Msgbox để xem nó trả về gì để dự đoán lỗi.

Nếu String1 tồn tại, String3 không tồn tại chứng tỏ đoạn
Mã:
      Set String3 = Sheets("huong_dan").[AD:AD].Find(String1.Offset(, 3), , , 1)
có vấn đề
=> Bạn sẽ tìm các thành phần như tên sheet, vùng dữ liệu, cú pháp Find để giải quyết

Với câu lệnh dhn46 nghĩ nên dùng tường minh, khi dùng 0,1,2... trong cú pháp bạn sẽ khó nhận biết. Hơn nữa bạn bỏ trống thành phần LookIn trong cú pháp Find cũng có thể gây sai vì nếu ví dụ Lookin=Coments thì sẽ không tìm các giá trị trong Cells, bỏ trống có nghĩa là sẽ dùng mặc định thiết đặt trước đó cho hành động Find
 
Upvote 0

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

Back
Top Bottom