hiennv.tsc
Thành viên chính thức


- Tham gia
- 13/4/19
- Bài viết
- 51
- Được thích
- 16
Cảm ơn bạnLàm thử, nếu bạn xài Office 2019 hoặc 365 thì có hàm TextJoin, không xài công thức lặp vậy:
Cái độ nguy hiểm của b là câu này: "Chú ý: Dấu phân cách có khả năng là dấu bất kỳ"Chào các bạn!
Nhờ các bạn giúp hàm như file đính kèm
Xin trân thành cảm ơn các bạn!
Chào bạn, do là có nhiều dữ liệu họ không thống nhất dấu phân cách. Chỗ thì dấu "," chỗ thì ";" vì vậy mình nói như vậy cho bài toán có tính tổng quát bạn àCái độ nguy hiểm của b là câu này: "Chú ý: Dấu phân cách có khả năng là dấu bất kỳ"
Bạn nghĩ gì khi viết câu này?
Vâng cảm ơn bạn @dazkangel , mình nhìn hàm bạn đưa lên đã thấy choáng và ngán quá. Khâm phục bạn đã kết hợp rất nhiều hàm để ra kết quả.Không rõ nữa bạn, nếu dùng hàm giả lập thì nhờ 1 người viết hàm VBA cho bạn tiện hơn.
Mình mới vào nhưng cũng đọc qua một số bài cảu bạn.Ơ hơ, đừng có gọi tên tôi.
Tôi theo trường phái giản dị, cái gì có thể làm thủ công được thì không cần tự động.
Ký tự bất kỳ trên máy tôi có các ký tự: 0-9, A-Z,a-z, ~ @ # % ^ & * ( ) _ - + = { [ } ] : ; " ' | \ < , > . ? / ...vì vậy mình nói như vậy cho bài toán có tính tổng quát bạn à
Để khi làm tránh bị sai sót, nhầm lẫn
Mất công đi kiểm tra rà soát
Chào bạn, bạn cho mình dấu "," và dấu ";" nhéTui cũng chạy luôn.
Ký tự bất kỳ trên máy tôi có các ký tự: 0-9, A-Z,a-z, ~`%^&*()_-+={[}]:;"'|\<,>.?/...
Một ý muốn "bao la" nhưng không phải là "quá khó", chỉ là "không khoái chuyện "bao la" thôi.
(Hỗ trợ thêm cho @dazkangel)Cảm ơn bạn
dazkangel
đã giúp, mình dùng office2013 thế có thể dùng hàm tự tạo Jointext được không hả bạn?
=JoinText(";",MID(C3,IF(MMULT({1,1},N(ISERROR(SEARCH(MID(C3,COLUMN(A:T)*3-2,2),C4:C5))))=2,COLUMN(A:T)*3-2,1/0),2))
Chào các bạn!
Nhờ các bạn giúp hàm như file đính kèm
Xin trân thành cảm ơn các bạn!
Function LoaiTrung(ByVal Rng As Range, ByVal Deli As String, ParamArray sArr()) As String
Dim Arr, iTem, j As Long, n As Long
Dim iChar As String, Res As String, tmp
Res = Deli & Rng.Value & Deli
If Len(Res) > 2 Then
For Each Arr In sArr
If Not IsArray(Arr) Then Arr = Array(Arr)
For Each iTem In Arr
If TypeName(iTem) = "Range" Then iTem = iTem.Value
If TypeName(iTem) <> "Error" Then
If Len(iTem) > 0 Then
iTem = iTem & ","
n = Len(iTem)
For j = 1 To n
iChar = Mid(iTem, j, 1)
If IsNumeric(iChar) Then
tmp = tmp & iChar
Else
Res = Replace(Res, Deli & tmp & Deli, Deli)
tmp = ""
End If
Next j
End If
End If
Next
Next
If Len(Res) > Len(Deli) Then LoaiTrung = Mid(Res, Len(Deli) + 1, Len(Res) - 2 * Len(Deli))
End If
End Function
Không biết nói gì hơn xin cảm ơn 2 bạn @HieuCD một người vừa siêu công thức vừa tài tình biến hóa VBA, và bạn @Phan Thế Hiệp siêu cao thủ hàm và công thức.Mã:Function LoaiTrung(ByVal Rng As Range, ByVal Deli As String, ParamArray sArr()) As String Dim Arr, iTem, j As Long, n As Long Dim iChar As String, Res As String, tmp Res = Deli & Rng.Value & Deli If Len(Res) > 2 Then For Each Arr In sArr If Not IsArray(Arr) Then Arr = Array(Arr) For Each iTem In Arr If TypeName(iTem) = "Range" Then iTem = iTem.Value If TypeName(iTem) <> "Error" Then If Len(iTem) > 0 Then iTem = iTem & "," n = Len(iTem) For j = 1 To n iChar = Mid(iTem, j, 1) If IsNumeric(iChar) Then tmp = tmp & iChar Else Res = Replace(Res, Deli & tmp & Deli, Deli) tmp = "" End If Next j End If End If Next Next If Len(Res) > Len(Deli) Then LoaiTrung = Mid(Res, Len(Deli) + 1, Len(Res) - 2 * Len(Deli)) End If End Function