Hoàng Nhật Phương
Thành viên gắn bó



			
		- Tham gia
- 5/11/15
- Bài viết
- 1,895
- Được thích
- 1,219



Bạn thử nếu có Office2019 nhéXin chào các Bạn,
Như tiêu đề OT đã nêu nhờ các bạn xem & giúp đỡ OT trường hợp trong file đính kèm này với ạ.
=TEXTJOIN("/";TRUE;IF(B4:B41>0;A4:A41&":"&B4:B41;""))


Xin chào "người anh hùng" PacificPR,Bạn thử nếu có Office2019 nhé
Kết thúc bằng Ctrl + Shift + EnterMã:=TEXTJOIN("/";TRUE;IF(B4:B41>0;A4:A41&":"&B4:B41;""))
Bạn thử hàm này xem saoXin chào "người anh hùng" PacificPR,
Chưa đúng Bạn ạ, ví dụ kết quả công thức của Bạn trả về chuỗi:
N1:4/N1:2100K
Nhưng OT muốn trả về là:
N1:4=2100K
OT đang sử dụng phiên bản OF365 thì không vấn đề gì nhưng tập tin sử dụng trên nhiều máy có phiên bản OF cũ (thậm trí 2007) do vậy mà "TEXTJOIN" không sử dụng được Bạn ạ.
Nhờ Bạn giúp đỡ cách làm khác ạ
Function Noichuoi(ByVal Delimiter As String, _
        ByVal sRng As Range, ByVal eRng As Range) As String
    Dim tmp1(), tmp2(), I As Long, Tmp(), N As Long
    Dim Dic As Object, aTmp As String
Set Dic = CreateObject("Scripting.Dictionary")
tmp1 = sRng.Value: tmp2 = eRng.Value
For I = 1 To UBound(tmp2)
    If tmp2(I, 1) <> Empty Then
        aTmp = tmp1(I, 1)
    
        If Not Dic.Exists(aTmp) Then
            N = N + 1
            Dic.Add aTmp, N
            ReDim Preserve Tmp(1 To N)
            Tmp(N) = tmp1(I, 1) & ":" & tmp2(I, 1)
        Else
            Tmp(Dic.Item(aTmp)) = Tmp(Dic.Item(aTmp)) & "=" & tmp2(I, 1)
        End If
    End If
Next I
If N Then Noichuoi = Join(Tmp, Delimiter)
End Function


Ùi, gần được rồi Bạn,thừa một dấu "/" (2 dấu "/" liền nhau) ở những vị trí "=0" ạ, nhờ Bạn xem tiếp ạBạn thử hàm này xem sao
Mã:Function Noichuoi(ByVal Delimiter As String, _ ByVal sRng As Range, ByVal eRng As Range) As String Dim tmp1(), tmp2(), I As Long, Tmp(), N As Long Dim Dic As Object, aTmp As String Set Dic = CreateObject("Scripting.Dictionary") tmp1 = sRng.Value: tmp2 = eRng.Value For I = 1 To UBound(tmp2) If tmp2(I, 1) <> Empty Then aTmp = tmp1(I, 1) If Not Dic.Exists(aTmp) Then N = N + 1 Dic.Add aTmp, N ReDim Preserve Tmp(1 To N) Tmp(N) = tmp1(I, 1) & ":" & tmp2(I, 1) Else Tmp(Dic.Item(aTmp)) = Tmp(Dic.Item(aTmp)) & "=" & tmp2(I, 1) End If End If Next I If N Then Noichuoi = Join(Tmp, Delimiter) End Function

Mình mới sửa lại rồi mà. Do cái N=N+1 đặt không đúng chỗÙi, gần được rồi Bạn,thừa một dấu "/" (2 dấu "/" liền nhau) ở những vị trí "=0" ạ, nhờ Bạn xem tiếp ạ



Giống y chang kết quả mẫu luôn rồi, thật ngưỡng mộ.Mình mới sửa lại rồi mà. Do cái N=N+1 đặt không đúng chỗ



Xin chào phuocam,Khéo tay một chút có thể sử dụng TEXTJOIN.
Kế quả đúng có độ dài là 180. Hahaha ...

=if(match(a4:a41,a4:a41,0)=match(row(a4:a41),row(a4:a41)),row(A4:a41),"")Khéo tay một chút có thể sử dụng TEXTJOIN.
Kế quả đúng có độ dài là 180. Hahaha ...



Cái này xài thế nào vậy Bạn?=if(match(a4:a41,a4:a41,0)=match(row(a4:a41),row(a4:a41)),row(A4:a41),"")
Không sử dụng được mà muốn xem công thức ?OT đang sử dụng phiên bản OF365 thì không vấn đề gì
nhưng tập tin sử dụng trên nhiều máy có phiên bản OF cũ (thậm trí 2007) do vậy mà "TEXTJOIN" không sử dụng được Bạn ạ.
Nhờ Bạn giúp đỡ cách làm khác ạ
Function MyTEXTJOIN(ByVal rng As Range) As String
    Dim arr, i As Long, ID As String, tmp As String
    arr = rng.Value
    For i = 1 To UBound(arr, 1)
        If arr(i, 2) <> 0 Then
            If arr(i, 1) <> ID Then
                tmp = tmp & "/" & arr(i, 1) & ":" & arr(i, 2)
                ID = arr(i, 1)
            Else
                tmp = tmp & "=" & arr(i, 2)
            End If
        End If
    Next
    MyTEXTJOIN = Mid(tmp, 2)
End FunctionCó người Anh trợ giúp mình gửi câu trả lời, Bạn xem thử.Xin chào các Bạn,
Như tiêu đề OT đã nêu nhờ các bạn xem & giúp đỡ OT trường hợp trong file đính kèm này với ạ.
Cách chính thức để có thể dùng trên nhiều phiên bản là dùng cột phụ. Kiên nhẫn thêm cột phụ cho đến bao giờ làm được....OT đang sử dụng phiên bản OF365 thì không vấn đề gì nhưng tập tin sử dụng trên nhiều máy có phiên bản OF cũ (thậm trí 2007) do vậy mà "TEXTJOIN" không sử dụng được Bạn ạ.
Nhờ Bạn giúp đỡ cách làm khác ạ
