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.
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 đượcthử 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.
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 codethì đã 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
str = BC(i, 2) & " " & BC(i, 3)