Ghép chuỗi có điều kiện. (1 người xem)

Liên hệ QC

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

Cách đơn giản nhất là dùng cột phụ thì chủ topic không làm tức là có ý biểu diễn. Để biểu diễn với nhiều người sử dụng excel mức độ cơ bản có thể dùng công thức khủng hoặc vba. Công thức thì em chịu nếu không dùng concat hay textjoin của office365. VBA nếu không tự viết được, người khác hỏi mà bó tay thì biểu diễn làm sao được.
Thực ra đâu có ý biểu diễn gì đâu bạn ạ. Lúc đầu nghĩ có khi phải dùng mảng hay vba mới giải quyết được vấn đề nên gửi topic lên. Còn nếu dùng cột phụ mà giải quyết được vấn đề theo hướng đơn giản đơn thì nhờ bạn giúp nhé. Cảm ơn bạn nhiều.
 
1. Nếu dùng cột phụ (các ô mình bôi màu xanh), công thức có vẻ hơi dài nhưng dễ viết.
E6=E5& ", "&B6 & " (" & TEXT(C6,"dd/mm/yyyy")&")"
fill xuống E8
Kết quả G4=SUBSTITUTE(RIGHT(E8,LEN(E8)-2),"0 (00/01/1900), ","")
2. Nếu dùng VBA
Mã:
Function xxx$(Data As Range, MaHang, Phi As Range)
    Dim arr(), P As Range, i&
    arr = Data.Value
    For Each P In Phi
        For i = 1 To UBound(arr)
            If arr(i, 1) = MaHang And arr(i, 4) = P Then
                xxx = xxx & ", " & arr(i, 2) & " (" & arr(i, 3) & ")"
                Exit For
            End If
        Next
    Next
    If Len(xxx) > 0 Then xxx = Right(xxx, Len(xxx) - 2)
End Function
Do vùng Phí chỉ có ít ô nên đọc trực tiếp không ảnh hưởng tốc độ.
Công thức (ô màu đỏ)
=xxx(NGUON!A8:D10,C2,D6:D8)
 

File đính kèm

1. Nếu dùng cột phụ (các ô mình bôi màu xanh), công thức có vẻ hơi dài nhưng dễ viết.
E6=E5& ", "&B6 & " (" & TEXT(C6,"dd/mm/yyyy")&")"
fill xuống E8
Kết quả G4=SUBSTITUTE(RIGHT(E8,LEN(E8)-2),"0 (00/01/1900), ","")
2. Nếu dùng VBA
Mã:
Function xxx$(Data As Range, MaHang, Phi As Range)
    Dim arr(), P As Range, i&
    arr = Data.Value
    For Each P In Phi
        For i = 1 To UBound(arr)
            If arr(i, 1) = MaHang And arr(i, 4) = P Then
                xxx = xxx & ", " & arr(i, 2) & " (" & arr(i, 3) & ")"
                Exit For
            End If
        Next
    Next
    If Len(xxx) > 0 Then xxx = Right(xxx, Len(xxx) - 2)
End Function
Do vùng Phí chỉ có ít ô nên đọc trực tiếp không ảnh hưởng tốc độ.
Công thức (ô màu đỏ)
=xxx(NGUON!A8:D10,C2,D6:D8)
Cảm ơn bạn rất nhiều.
 
1. Nếu dùng cột phụ (các ô mình bôi màu xanh), công thức có vẻ hơi dài nhưng dễ viết.
E6=E5& ", "&B6 & " (" & TEXT(C6,"dd/mm/yyyy")&")"
fill xuống E8
Kết quả G4=SUBSTITUTE(RIGHT(E8,LEN(E8)-2),"0 (00/01/1900), ","")
2. Nếu dùng VBA
Mã:
Function xxx$(Data As Range, MaHang, Phi As Range)
    Dim arr(), P As Range, i&
    arr = Data.Value
    For Each P In Phi
        For i = 1 To UBound(arr)
            If arr(i, 1) = MaHang And arr(i, 4) = P Then
                xxx = xxx & ", " & arr(i, 2) & " (" & arr(i, 3) & ")"
                Exit For
            End If
        Next
    Next
    If Len(xxx) > 0 Then xxx = Right(xxx, Len(xxx) - 2)
End Function
Do vùng Phí chỉ có ít ô nên đọc trực tiếp không ảnh hưởng tốc độ.
Công thức (ô màu đỏ)
=xxx(NGUON!A8:D10,C2,D6:D8)
Bạn viết cái hàm tên xxx này thì khổ cho bạn @thinhnx22 sau này bạn ấy viết hàm chắc toàn xxx, yyy, zzz... không quá!
 
Web KT

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

Back
Top Bottom