Lộc giữ liệu theo điều kiện thay hàm VLookup (1 người xem)

  • Thread starter Thread starter lhthai
  • Ngày gửi Ngày gửi
Liên hệ QC

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

lhthai

Thành viên thường trực
Tham gia
1/9/07
Bài viết
309
Được thích
27
Chào Các Anh
Hiện tại hàm Vlookup chỉ dò tìm được có 1 kết quả đầu tiên thôi.
Nay muốn viết code để lấy giữ liệu từ sheet DATA qua sheet BAOCAO.
Các anh xem file đính kèm
 
Kết thúc công thức = 3 phím Ctrl + Shift + Enter

Mã:
 F5 =IFERROR(INDEX(DATA!$D$4:$D$318;SMALL(IF(DATA!$C$4:$C$318[COLOR=#ff0000][B]=$E$5[/B][/COLOR];ROW(DATA!$C$4:$C$318)-3);ROW(1:1)));"")
Mã:
 G5 =IFERROR(INDEX(DATA!$E$4:$E$318;SMALL(IF(DATA!$C$4:$C$318[COLOR=#ff0000][B]=$E$5[/B][/COLOR];ROW(DATA!$C$4:$C$318)-3);ROW(1:1)));"")

Bạn tự copy công thức cho các dòng ở dưới (mục 3, 3,...)& sửa điều kiện đỏ đỏ trong công thức cho tương ứng với code cần dò tìm của bạn !

Công thức rất hay nhưng với giữ liệu nhiều cần sử dụng code cho nhanh.
Cám ơn bạn nhiều.
 
Upvote 0
Còn một điều nữa không kém quan trọng:

"Code" rất kỵ với những trang tính trộn ô!
 
Upvote 0
Công thức rất hay nhưng với giữ liệu nhiều cần sử dụng code cho nhanh.
Cám ơn bạn nhiều.

thử code sau, hên sui...heheheh
Mã:
Sub Multiple_Lookup()

Dim data, BC As Variant, i, j, k As Long
With Sheet1
    data = .[C4].Resize(.[C10000].End(3).Row, 4).Value
End With
With Sheet3
.[f5:h10000].ClearContents
BC = .[E5].Resize(.[e10000].End(3).Row + 5, 4).Value
End With
For i = 1 To UBound(BC)
If BC(i, 1) <> "" Then
k = i
    For j = 1 To UBound(data)
        If BC(i, 1) = data(j, 1) Then
            BC(k, 2) = data(j, 2)
            BC(k, 3) = data(j, 3)
            BC(k, 4) = data(j, 4)
            k = k + 1
        End If
    Next
End If
Next
        
Sheet3.[E5].Resize(UBound(BC), 4).Value = BC

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
thử code sau, hên sui...heheheh
Mã:
Sub Multiple_Lookup()

Dim data, BC As Variant, i, j, k As Long
With Sheet1
    data = .[C4].Resize(.[C10000].End(3).Row, 4).Value
End With
With Sheet3
.[f5:h10000].ClearContents
BC = .[E5].Resize(.[e10000].End(3).Row + 5, 4).Value
End With
For i = 1 To UBound(BC)
If BC(i, 1) <> "" Then
k = i
    For j = 1 To UBound(data)
        If BC(i, 1) = data(j, 1) Then
            BC(k, 2) = data(j, 2)
            BC(k, 3) = data(j, 3)
            BC(k, 4) = data(j, 4)
            k = k + 1
        End If
    Next
End If
Next
        
Sheet3.[E5].Resize(UBound(BC), 4).Value = BC

End Sub
Code chạy 1 lần đầu nếu cập nhật điều kiện mới vào không chạy được
Code xóa công thức nối chuỗi cột E
Cám ơn anh.
 
Upvote 0
Code chạy 1 lần đầu nếu cập nhật điều kiện mới vào không chạy được
Code xóa công thức nối chuỗi cột E
Cám ơn anh.

thì đã nói là hên sui mà
trong trường hơp này thì nó sui
Mã:
Sub Multiple_Lookup()

Dim data, BC As Variant, i, j, k As Long, str As String
With Sheet1
    data = .[C4].Resize(.[C10000].End(3).Row, 4).Value
End With
With Sheet3
.[E5:H10000].ClearContents
BC = .[A5].Resize(.[A10000].End(3).Row + 5, 8).Value
End With
For i = 1 To UBound(BC)
If BC(i, 1) <> "" Then
k = i
str = BC(i, 2) & " " & BC(i, 3)
    For j = 1 To UBound(data)
        If data(j, 1) = str Then
            BC(k, 5) = str
            BC(k, 6) = data(j, 2)
            BC(k, 7) = data(j, 3)
            BC(k, 8) = data(j, 4)
            k = k + 1
        End If
    Next
End If
Next
        
Sheet3.[A5].Resize(UBound(BC), 8).Value = BC

End Sub
 
Upvote 0
thì đã nói là hên sui mà
trong trường hơp này thì nó sui
Mã:
Sub Multiple_Lookup()

Dim data, BC As Variant, i, j, k As Long, str As String
With Sheet1
    data = .[C4].Resize(.[C10000].End(3).Row, 4).Value
End With
With Sheet3
.[E5:H10000].ClearContents
BC = .[A5].Resize(.[A10000].End(3).Row + 5, 8).Value
End With
For i = 1 To UBound(BC)
If BC(i, 1) <> "" Then
k = i
str = BC(i, 2) & " " & BC(i, 3)
    For j = 1 To UBound(data)
        If data(j, 1) = str Then
            BC(k, 5) = str
            BC(k, 6) = data(j, 2)
            BC(k, 7) = data(j, 3)
            BC(k, 8) = data(j, 4)
            k = k + 1
        End If
    Next
End If
Next
        
Sheet3.[A5].Resize(UBound(BC), 8).Value = BC

End Sub
Cám ơn anh dành thời gian viết code
Code này và trên điều như nhau mất công thức lấy giữ liệu từ sheet KHSX
 
Upvote 0
Cám ơn anh dành thời gian viết code
Code này và trên điều như nhau mất công thức lấy giữ liệu từ sheet KHSX

đã chạy cod thi giữ cthuc làm gi nữa
dòng lệnh này
Mã:
str = BC(i, 2) & " " & BC(i, 3)
là nó nối 2 chuổi lại đó
===========
trong cthuc của bạn làm gì có sheet KHSX?
thui hết hứng rùi
hèhè....heheheheh
 
Upvote 0

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

Back
Top Bottom