Tham chiếu chuỗi để so sánh và trả về kết quả

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
253
Được thích
47
Giới tính
Nam
1670989536648.png
Em xin chào diễn đàn.
Em có 2 sheet dữ liệu Hethong và theogioi , vì chuỗi sẽ có nhiều dòng giống nhau, nhưng số lượng lại khác nhau ( có thể giống nhau )
Nên khi em dùng làm Vlookup đơn thuần thì chưa thể hiện dduwcocj kết quả
Em có trình bày kết quả và diễn giải như trong file .
Mong nhận được giúp đỡ từ diễn đàn ạ .
 

File đính kèm

  • 221214_ đối chiếu dữ liệu giống nhau tại 2 sheet.xlsx
    53.1 KB · Đọc: 28
View attachment 284626
Em xin chào diễn đàn.
Em có 2 sheet dữ liệu Hethong và theogioi , vì chuỗi sẽ có nhiều dòng giống nhau, nhưng số lượng lại khác nhau ( có thể giống nhau )
Nên khi em dùng làm Vlookup đơn thuần thì chưa thể hiện dduwcocj kết quả
Em có trình bày kết quả và diễn giải như trong file .
Mong nhận được giúp đỡ từ diễn đàn ạ .
Có đủ kết quả không hay là phải lấy tương đương.Mà 1 dòng có thể dùng cho nhiều kết quả không.Có trùng số lượng cùng mã không ban.
 
Upvote 0
Có đủ kết quả không hay là phải lấy tương đương
Phải lấy đủ kết quả ạ . Lấy kết quả theo từng dòng mà chuỗi đó có xuất hiện tại sheet hethong
( VD 1 chuỗi đó tại sheet hethong có 3 dòng thì lấy đúng số lượng 3 dòng ứng với chuỗi đó tại sheet theogioi
TH nếu 1 chuỗi đó tại sheet hethong có 2 dòng mà sheet theogioi có tới 3 dòng thì sẽ lấy cả 3 dòng tại sheet theogioi qua luôn kèm số lượng
Mà 1 dòng có thể dùng cho nhiều kết quả không
1 dòng cố đính 1 dòng ạ . Ưu tiên số lượng giống nhau .
Có trùng số lượng cùng mã không ban.
Ưu tiên số lượng trùng nhau ạ
 
Upvote 0
Mong sự trợ giúp từ diễn đàn cho topic này ạ.
 
Upvote 0
Mong sự trợ giúp từ diễn đàn cho topic này ạ.

Bạn thử công thức sau tại Sheet Hethong
L4:
Mã:
=INDEX(theogioi!$H$4:$H$815,MATCH(MIN(ABS(IF(H4=theogioi!$G$4:$G$8155,theogioi!$H$4:$H$815-Hethong!I4,9.99999999999999E+307))),ABS(IF(H4=theogioi!$G$4:$G$8155,theogioi!$H$4:$H$815-Hethong!I4,9.99999999999999E+307)),0))
M4:
Mã:
=INDEX(theogioi!$I$4:$I$815, MIN(IF((Hethong!L4=theogioi!$H$4:$H$815)*(Hethong!H4=theogioi!$G$4:$G$815)*(COUNTIFS($L$3:L3, theogioi!$H$4:$H$815, $M$3:M3, theogioi!$I$4:$I$815)<COUNTIFS(theogioi!$H$4:$H$815, theogioi!$H$4:$H$815, theogioi!$I$4:$I$815, theogioi!$I$4:$I$815)), MATCH(ROW(theogioi!$H$4:$H$815), ROW(theogioi!$H$4:$H$815)), "H")))

P/S: "Theo dõi" chứ không phải là "Theo giõi", bạn sử dụng tiếng Việt cho chuẩn !
 
Upvote 0
Bạn thử công thức sau tại Sheet Hethong
L4:
Mã:
=INDEX(theogioi!$H$4:$H$815,MATCH(MIN(ABS(IF(H4=theogioi!$G$4:$G$8155,theogioi!$H$4:$H$815-Hethong!I4,9.99999999999999E+307))),ABS(IF(H4=theogioi!$G$4:$G$8155,theogioi!$H$4:$H$815-Hethong!I4,9.99999999999999E+307)),0))
M4:
Mã:
=INDEX(theogioi!$I$4:$I$815, MIN(IF((Hethong!L4=theogioi!$H$4:$H$815)*(Hethong!H4=theogioi!$G$4:$G$815)*(COUNTIFS($L$3:L3, theogioi!$H$4:$H$815, $M$3:M3, theogioi!$I$4:$I$815)<COUNTIFS(theogioi!$H$4:$H$815, theogioi!$H$4:$H$815, theogioi!$I$4:$I$815, theogioi!$I$4:$I$815)), MATCH(ROW(theogioi!$H$4:$H$815), ROW(theogioi!$H$4:$H$815)), "H")))

P/S: "Theo dõi" chứ không phải là "Theo giõi", bạn sử dụng tiếng Việt cho chuẩn !
Cảm ơn sự giúp đỡ của bạn, Lỗi chính tả mình sẽ chú ý hơn : @hoangtuaotrang_hp_vn
Tại công thức L4 : có số ( 9.99999999999999E+307 ) . xin hỏi ý nghĩa số này trong công thức bạn nhé ?
 
Upvote 0
Mong sự trợ giúp từ diễn đàn cho topic này ạ.
Đã lâu không gặp. Vẫn ổn chứ.
Nếu muốn dùng Code thì hãy Thử code này xem sao? Kết quả đang để từ L4 đến M..
Mã:
Option Explicit

Sub Soledad()
Dim i&, j&, Lr, t&, R&, k&, Lr1&, R1&
Dim Arr(), Arr1(), Res(), KQ()
Dim Dic As Object, Key, Temp
With Sheets("theogioi")
    Lr = .Cells(Rows.Count, 7).End(xlUp).Row
    Arr = .Range("G4:I" & Lr).Value
End With
R = UBound(Arr)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim Res(1 To R, 1 To 2)
For i = 1 To R
    Key = Arr(i, 1) & "#" & Arr(i, 2)
        If Not Dic.Exists(Key) Then
            t = t + 1: Dic.Add (Key), t
            Res(t, 1) = Arr(i, 2): Res(t, 2) = Arr(i, 3)
        End If
Next i
With Sheets("Hethong")
    Lr1 = .Cells(Rows.Count, 8).End(xlUp).Row
    Arr1 = .Range("H4:I" & Lr).Value
    R1 = UBound(Arr)
ReDim KQ(1 To R1, 1 To 2)
    For i = 1 To R1
Temp = Arr1(i, 1) & "#" & Arr1(i, 2)
        If Dic.Exists(Temp) Then
            k = Dic.Item(Temp)
            KQ(i, 1) = Res(k, 1)
            KQ(i, 2) = Res(k, 2)
        End If
    Next i
    .Range("L4").Resize(i - 1, 2) = KQ
End With
Set Dic = Nothing
MsgBox "Done"
End Sub
 
Upvote 0
Đã lâu không gặp. Vẫn ổn chứ.
Nếu muốn dùng Code thì hãy Thử code này xem sao? Kết quả đang để từ L4 đến M..
Mã:
Option Explicit

Sub Soledad()
Dim i&, j&, Lr, t&, R&, k&, Lr1&, R1&
Dim Arr(), Arr1(), Res(), KQ()
Dim Dic As Object, Key, Temp
With Sheets("theogioi")
    Lr = .Cells(Rows.Count, 7).End(xlUp).Row
    Arr = .Range("G4:I" & Lr).Value
End With
R = UBound(Arr)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim Res(1 To R, 1 To 2)
For i = 1 To R
    Key = Arr(i, 1) & "#" & Arr(i, 2)
        If Not Dic.Exists(Key) Then
            t = t + 1: Dic.Add (Key), t
            Res(t, 1) = Arr(i, 2): Res(t, 2) = Arr(i, 3)
        End If
Next i
With Sheets("Hethong")
    Lr1 = .Cells(Rows.Count, 8).End(xlUp).Row
    Arr1 = .Range("H4:I" & Lr).Value
    R1 = UBound(Arr)
ReDim KQ(1 To R1, 1 To 2)
    For i = 1 To R1
Temp = Arr1(i, 1) & "#" & Arr1(i, 2)
        If Dic.Exists(Temp) Then
            k = Dic.Item(Temp)
            KQ(i, 1) = Res(k, 1)
            KQ(i, 2) = Res(k, 2)
        End If
    Next i
    .Range("L4").Resize(i - 1, 2) = KQ
End With
Set Dic = Nothing
MsgBox "Done"
End Sub
Em cảm ơn anh nhiều ạ .
Code chạy ra Kết quả đúng rồi ạ .
 
Upvote 0
Web KT

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

Back
Top Bottom