Hoàng Nhật Phương
Thành viên gắn bó
- Tham gia
- 5/11/15
- Bài viết
- 1,894
- Được thích
- 1,213
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 Function
Có 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 ạ
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2