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


- Tham gia
- 13/4/19
- Bài viết
- 51
- Được thích
- 16


bạn định nối thế nàoXin chào các bạn!
Các bạn giúp mình hàm này với nhé
mình có file đính kèm
Xin trân thành cảm ơn các bạn!


Nối theo dấu "," hoặc dấu gì đó bạn làm ơn là cho tùy chọn dấu trong hàm nhébạn định nối thế nào
Thử:Xin chào các bạn!
Các bạn giúp mình hàm này với nhé
mình có file đính kèm
Xin trân thành cảm ơn các bạn!
E3=IFERROR(1/(1/SUM(MMULT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100))=F3),ROW($1:$26)^0)))&"-"&F3&"-K","0-K-"&F3)


Cảm ơn bạn @Thử:
Enter, fill xuống.Mã:E3=IFERROR(1/(1/SUM(MMULT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100))=F3),ROW($1:$26)^0)))&"-"&F3&"-K","0-K-"&F3)
Thân
=COUNTIF($C$5:$C$17,"*"&F3&"*") nếu tìm thấy ký tự cần tìm (Vd: F3=15) thì chỉ đếm được:Cảm ơn bạn @
Phan Thế Hiệp
Mình mới vào và đã được đọc các hàm của bạn xử dụng rất hay.
nhưng hàm dài quá bạn ơi, đôi khi sử dụng khó quá
Bạn cho mình hỏi là cái hàm Countif() mình sử dụng để đếm thấy sai bạn à
Bạn giải thích giúp mình sao nó lại sai?
Cảm ơn bạn nhé


Mình gửi lại bài như này, bạn đang hiểu lầm ý của mình (Bởi mình chưa giải thích rõ ý)Thử:
Enter, fill xuống.Mã:E3=IFERROR(1/(1/SUM(MMULT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100))=F3),ROW($1:$26)^0)))&"-"&F3&"-K","0-K-"&F3)
Thân
Công thức bài #4 có thể rút gọn chút:Trời ơi, từ trước tới nay mình toàn dùng công thức trên để đếm trong chuỗi,và mình cũng đã phát hiện ra nó sai sai
Hôm nay bạn giải thích thì mình mới hiểu
Cảm ơn bạn.
Vậy thì dùng hàm nào để thay thế hàm COUNTIF($C$5:$C$17,"*"&F3&"*")
Bạn chỉ dẫn giúp mình với nhé.
(Mặc dù đây là ý phụ của bài chính)
E3=IFERROR(1/(1/SUMPRODUCT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100))=F3)))&"-"&F3&"-K","0-K-"&F3)


BạnCông thức bài #4 có thể rút gọn chút:
Enter, fill xuống.Mã:E3=IFERROR(1/(1/SUMPRODUCT(N(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100))=F3)))&"-"&F3&"-K","0-K-"&F3)
Thân
Thử:Bạn
Phan Thế Hiệp
ơi, đấy không phải kết quả mình mong muốn (Bởi vì mình không nói rõ ý)
Bạn xem lại file giúp mình nhé!
L2=JoinText(";",IF(FREQUENCY(IFERROR(MATCH(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100)),$F$3:$F$103,),""),ROW($1:$100))>=1,$F$3:$F$103,1/0))
L3=JoinText(";",IF(FREQUENCY(IFERROR(MATCH(TRIM(MID(SUBSTITUTE(SUBSTITUTE($C$5:$C$17,";",","),",",REPT(" ",100)),(COLUMN($A:$Z)-1)*100+1,100)),$F$3:$F$103,),""),ROW($1:$100))<1,$F$3:$F$103,1/0))
Không biết có hiểu ý bạn không.Trời ơi, từ trước tới nay mình toàn dùng công thức trên để đếm trong chuỗi,và mình cũng đã phát hiện ra nó sai sai
...
Mình gửi lại bài như này, bạn đang hiểu lầm ý của mình (Bởi mình chưa giải thích rõ ý)
=jointext(";",TRUE,IF(COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")>0,$F$3:$F$102,""))
=jointext(";",TRUE,IF(COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")<1,$F$3:$F$102,""))


Cảm ơn bạnKhông biết có hiểu ý bạn không.
Trong bài của bạn không cần đếm cụ thể. Chỉ cần biết >= 1 hay = 0 (<1).
Công thức cho A1
Công thức cho A2Mã:=jointext(";",TRUE,IF(COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")>0,$F$3:$F$102,""))
Mã:=jointext(";",TRUE,IF(COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")<1,$F$3:$F$102,""))
Cả 2 công thức kết thúc bằng Ctrl + Shift + Enter.
Hàm JoinText bạn xen ở bài #10. Hoặc tự viết, vì chỉ là nối chuỗi thôi.
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
Dim aDest() As Variant
Dim aSub As Variant
Dim item As Variant
Dim idx As Long
Dim n As Long
Dim sItem As String
'On Error Resume Next
For n = LBound(Arrays) To UBound(Arrays)
aSub = Arrays(n)
If Not IsArray(aSub) Then aSub = Array(aSub)
For Each item In aSub
If TypeName(item) <> "Error" Then
sItem = CStr(item)
idx = idx + 1
ReDim Preserve aDest(1 To idx)
aDest(idx) = sItem
End If
Next
Next
If idx Then JoinText = Join(aDest, Delimiter)
End Function


Cảm ơn bạn @phuocam chúc bạn buổi sớm và cuối tuần vui vẻ, mạnh khỏeHàm Trong file:
Nên cách sử dụng không có TRUE và cuối là tạo lỗi 1/0:Mã:Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String Dim aDest() As Variant Dim aSub As Variant Dim item As Variant Dim idx As Long Dim n As Long Dim sItem As String 'On Error Resume Next For n = LBound(Arrays) To UBound(Arrays) aSub = Arrays(n) If Not IsArray(aSub) Then aSub = Array(aSub) For Each item In aSub If TypeName(item) <> "Error" Then sItem = CStr(item) idx = idx + 1 ReDim Preserve aDest(1 To idx) aDest(idx) = sItem End If Next Next If idx Then JoinText = Join(aDest, Delimiter) End Function
=JoinText(";",IF(COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")>0,$F$3:$F$102,1/0))
Tôi không hiểu bạn nói gì.Cảm ơn bạn
batman1
Chúc bạn ngày mới và cuối tuần mạnh khỏe có nhiều điều vui.
đúng là như vậy bạn ơi, nhưng công thức COUNTIF đang bị sai, vì vậy nhờ bạn dùng công thức khác giúp mình với nhé


Bạn ơi, nếu nó đã đếm không chính xác rồi thì làm sao tin được kết quả là đúng hay sai?Tôi không hiểu bạn nói gì.
Bạn có cần đếm đâu. Và tôi cũng không cần đếm chính xác. Chỉ cần biết có >= 1 hay không. Vì thế dùng COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*")>0 được. Cho dù xuất hiện 1, 2 hay 100 lần chăng nữa thì cũng chả cần quan tâm. COUNTIF ở trên sẽ trả về TRUE nếu Fxyz xuất hiện ÍT NHẤT 1 lần. Thế là đủ, đâu cần đếm chính xác?
Cái mà bạn cần kiểm tra là xem kết quả "00;01..." có đúng ý không thôi. Nếu đúng ý thì đừng bắt người khác phải dùng hàm khác hay vẫn dùng COUNTIF nhưng phải theo ý mình. Chuyện bạn nhờ thì chỉ cần kết quả. Phương pháp thì hãy để người khác tự lựa chọn.
Theo file bài 1, đếm chính xácBạn ơi, nếu nó đã đếm không chính xác rồi thì làm sao tin được kết quả là đúng hay sai?
Ví dụ có số trong dãy nhưng nó đếm =0 thì kết quả bị sai bạn à
Và điều mình muốn nữa là không chỉ dùng đếm cho trường hợp >1 hay <1
Mà có thể cho >; < với bát kỳ số nào
Vậy mong bạn giúp đỡ nhé
Cảm ơn bạn!
G3=SUMPRODUCT((LEN($C$5:$C$17)-LEN(SUBSTITUTE($C$5:$C$17,F3,"")))/LEN(F3))


Cảm ơn bạnTheo file bài 1, đếm chính xác
Mã:G3=SUMPRODUCT((LEN($C$5:$C$17)-LEN(SUBSTITUTE($C$5:$C$17,F3,"")))/LEN(F3))
|
trong các file mẫu làm gì có nói lỗi #N/A đâu bạnCảm ơn bạn
công thức này đúng nhưng khi gắp các lỗi #N/A thì công thức cũng sẽ bị lỗi
Bởi vì các vùng tham chiếu của mình có đặt công thức, nên các lỗi #N/A là hay thơngf gặp
Tôi biết là bạn lười, và bạn nghĩ là không được nên không thử làm như tôi hướng dẫn.Bạn ơi, nếu nó đã đếm không chính xác rồi thì làm sao tin được kết quả là đúng hay sai?
Ví dụ có số trong dãy nhưng nó đếm =0 thì kết quả bị sai bạn à
Vậy mong bạn giúp đỡ nhé
Cảm ơn bạn!
Đây là ý mà bây giờ bạn mới thêm vào.Và điều mình muốn nữa là không chỉ dùng đếm cho trường hợp >1 hay <1
Mà có thể cho >; < với bát kỳ số nào
=jointext(",",TRUE,IF(TRANSPOSE(MMULT(--TRANSPOSE(ROW($5:$17)>0),LEN($C$5:$C$17)-LEN(SUBSTITUTE($C$5:$C$17,TRANSPOSE($F$3:$F$102),"*"))))>=2,$F$3:$F$102,""))


Chào bạn @batman1 cái ý tưởng ">1 hoặc <1 hay là > hoặc < bất kỳ số nào đó" mình cũng đã đưa ngay vào file ban đầu, chắc bạn không dọc kỹ và để ý.Tôi biết là bạn lười, và bạn nghĩ là không được nên không thử làm như tôi hướng dẫn.
Thôi tôi đính kèm tập tin.
Tôi đã nói là bài của bạn chỉ có 2 trường hợp: >= 1 hoặc 0. Vậy thì cần gì đếm chính xác?
Tôi cho bạn bài toán: Nếu trong đám đông 10000 người có >= 1 người tóc vàng mắt xanh thì bạn vào nhà băng lĩnh 10 triệu.
Bạn sẽ làm thế nào? Tất nhiện là bạn sẽ kiểm tra người 1. Nếu không là tóc vàng mắt xanh thì kiểm tra người 2, và cứ thế tiếp tục. Giả sử người 50 có tóc vàng mắt xanh thì bạn vẫn cứ kiểm tra tiếp tới người 10000 hay là bạn thôi kiểm tra và đi nhà băng lĩnh tiền?
Xem tập tin đính kèm
Đây là ý mà bây giờ bạn mới thêm vào.
Khi tôi làm là tôi làm cho bài toán cụ thể mà bạn nêu rõ 2 trường hợp là >= 1 và < 1. Tính tôi không thích chơi trò "thông tin nhỏ giọt". Tôi không tham gia thêm nữa.
-------------
Tới bài này mới cần đếm chính xác.
Ý tưởng và làm vội, không suy nghĩ nhiều. Không nghĩ thêm nữa. Nhưng tôi nghĩ có thể rút gọn nữa.
Tôi không tham gia nữa vì tôi đã nhìn thấy là bạn chơi trò "thông tin nhỏ giọt"Mã:=jointext(",",TRUE,IF(TRANSPOSE(MMULT(--TRANSPOSE(ROW($5:$17)>0),LEN($C$5:$C$17)-LEN(SUBSTITUTE($C$5:$C$17,TRANSPOSE($F$3:$F$102),"*"))))>=2,$F$3:$F$102,""))
Tôi tôi xin rút lui.
Cách dùng hàm trong fileCảm ơn bạn @phuocam chúc bạn buổi sớm và cuối tuần vui vẻ, mạnh khỏe
Bạn ơi công thức COUNTIF($C$5:$C$17,"*"&$F$3:$F$102&"*") là hàm đếm bị sai, vì vậy mong bạn viết giúp hàm khác giúp mình nhé
Cảm ơn bạn rất nhiều!
Function Join_Num(ByVal comStr, ByVal Deli As String, ParamArray sArr()) As String
Dim Arr, iTem, nArr(0 To 99) As Long, cArr()
Dim i As Long, j As Long, n As Long
Dim iChar As String, tmp, Res As String
cArr = Array(">=", "<=", ">", "<", "=")
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
ElseIf Len(tmp) > 0 Then
tmp = CLng(tmp)
If tmp < 100 Then nArr(tmp) = nArr(tmp) + 1
tmp = ""
End If
Next j
End If
End If
Next
Next
n = 4: tmp = comStr
For i = 0 To 4
If InStr(1, comStr, cArr(i)) > 0 Then
tmp = CLng(Replace(comStr, cArr(i), ""))
n = i
Exit For
End If
Next i
For i = 0 To 99
Select Case n
Case 0
If nArr(i) >= tmp Then Res = Res & Deli & Format(i, "00")
Case 1
If nArr(i) <= tmp Then Res = Res & Deli & Format(i, "00")
Case 2
If nArr(i) > tmp Then Res = Res & Deli & Format(i, "00")
Case 3
If nArr(i) < tmp Then Res = Res & Deli & Format(i, "00")
Case 4
If nArr(i) = tmp Then Res = Res & Deli & Format(i, "00")
End Select
Next i
If Len(Res) = 0 Then
Join_Num = "K"
Else
Join_Num = Mid(Res, Len(Deli) + 1, Len(Res))
End If
End Function


Cảm ơn, xin cảm ơn bạn @HieuCDCách dùng hàm trong file
Mã:Function Join_Num(ByVal comStr, ByVal Deli As String, ParamArray sArr()) As String Dim Arr, iTem, nArr(0 To 99) As Long, cArr() Dim i As Long, j As Long, n As Long Dim iChar As String, tmp, Res As String cArr = Array(">=", "<=", ">", "<", "=") 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 ElseIf Len(tmp) > 0 Then tmp = CLng(tmp) If tmp < 100 Then nArr(tmp) = nArr(tmp) + 1 tmp = "" End If Next j End If End If Next Next n = 4: tmp = comStr For i = 0 To 4 If InStr(1, comStr, cArr(i)) > 0 Then tmp = CLng(Replace(comStr, cArr(i), "")) n = i Exit For End If Next i For i = 0 To 99 Select Case n Case 0 If nArr(i) >= tmp Then Res = Res & Deli & Format(i, "00") Case 1 If nArr(i) <= tmp Then Res = Res & Deli & Format(i, "00") Case 2 If nArr(i) > tmp Then Res = Res & Deli & Format(i, "00") Case 3 If nArr(i) < tmp Then Res = Res & Deli & Format(i, "00") Case 4 If nArr(i) = tmp Then Res = Res & Deli & Format(i, "00") End Select Next i If Len(Res) = 0 Then Join_Num = "K" Else Join_Num = Mid(Res, Len(Deli) + 1, Len(Res)) End If End Function
Bạn @HieuCD chỉnh giúp mình một lỗi nhỏ này nữa dược không?Cách dùng hàm trong file
Mã:Function Join_Num(ByVal comStr, ByVal Deli As String, ParamArray sArr()) As String Dim Arr, iTem, nArr(0 To 99) As Long, cArr() Dim i As Long, j As Long, n As Long Dim iChar As String, tmp, Res As String cArr = Array(">=", "<=", ">", "<", "=") 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 ElseIf Len(tmp) > 0 Then tmp = CLng(tmp) If tmp < 100 Then nArr(tmp) = nArr(tmp) + 1 tmp = "" End If Next j End If End If Next Next n = 4: tmp = comStr For i = 0 To 4 If InStr(1, comStr, cArr(i)) > 0 Then tmp = CLng(Replace(comStr, cArr(i), "")) n = i Exit For End If Next i For i = 0 To 99 Select Case n Case 0 If nArr(i) >= tmp Then Res = Res & Deli & Format(i, "00") Case 1 If nArr(i) <= tmp Then Res = Res & Deli & Format(i, "00") Case 2 If nArr(i) > tmp Then Res = Res & Deli & Format(i, "00") Case 3 If nArr(i) < tmp Then Res = Res & Deli & Format(i, "00") Case 4 If nArr(i) = tmp Then Res = Res & Deli & Format(i, "00") End Select Next i If Len(Res) = 0 Then Join_Num = "K" Else Join_Num = Mid(Res, Len(Deli) + 1, Len(Res)) End If End Function
Chỉnh lại codeCảm ơn, xin cảm ơn bạn @HieuCD
Hàm của bạn quá tuyệt đỉnh và đúng ý của mình
Chúc bạn cuối tuần và nghỉ ngày lễ vui vẻ, hạnh phúc.
Bài đã được tự động gộp:
Bạn @HieuCD chỉnh giúp mình một lỗi nhỏ này nữa dược không?
Mặc định là các số từ "00-99" nhưng trong mảng dữ liệu có các số đơn từ "0-9" thì công thức không phân biệt
Cảm ơn sự giúp đỡ của bạn.
Function Join_Num(ByVal comStr, ByVal Deli As String, ParamArray sArr()) As String
Dim Arr, iTem, nArr(0 To 99) As Long, cArr()
Dim i As Long, j As Long, n As Long
Dim iChar As String, tmp, Res As String
cArr = Array(">=", "<=", ">", "<", "=")
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
If Len(tmp) = 2 Then 'Chi xet so co 2 ky tu
tmp = CLng(tmp)
If tmp < 100 Then nArr(tmp) = nArr(tmp) + 1
End If
tmp = ""
End If
Next j
End If
End If
Next
Next
n = 4: tmp = comStr
For i = 0 To 4
If InStr(1, comStr, cArr(i)) > 0 Then
tmp = CLng(Replace(comStr, cArr(i), ""))
n = i
Exit For
End If
Next i
For i = 0 To 99
Select Case n
Case 0
If nArr(i) >= tmp Then Res = Res & Deli & Format(i, "00")
Case 1
If nArr(i) <= tmp Then Res = Res & Deli & Format(i, "00")
Case 2
If nArr(i) > tmp Then Res = Res & Deli & Format(i, "00")
Case 3
If nArr(i) < tmp Then Res = Res & Deli & Format(i, "00")
Case 4
If nArr(i) = tmp Then Res = Res & Deli & Format(i, "00")
End Select
Next i
If Len(Res) = 0 Then
Join_Num = "K"
Else
Join_Num = Mid(Res, Len(Deli) + 1, Len(Res))
End If
End Function
1- Đếm các số (Tôi đang dùng hàm trên nhưng thấy hàm đó đếm cũng không chuẩn)
2- Cột kết quả "I" là Tìm các số đếm được ở cột "G", nếu có số lớn hơn 1 số nào đó thì lấy kết quả ở cốt "F"
3-Cột kết quả "J" là Tìm các số đếm được ở cột "G", nếu có số nhỏ hơn 1 (Hoặc số nào đó thì lấy kết quả ở cốt "F")
Và bước cuối cùng là nối kết quả của chúng lại với nhau,
Để xử lý vấn đề của bạn thì phải tính trên các mảng, nên công thức, dù gì dù, cũng dài và nặng. Muốn nhẹ nhàng hơn, thì buộc lòng:nhưng hàm dài quá bạn ơi, đôi khi sử dụng khó quá
Bạn cho mình hỏi là cái hàm Countif() mình sử dụng để đếm thấy sai bạn à
Bạn giải thích giúp mình sao nó lại sai?


Cảm ơn bạn @Phan Thế Hiệp rất nhiều, mặc dù mình mới vào diễn đàn hôm qua nhưng đã được đọc các hàm bạn viết và của bạn @HieuCD nữa.@hiennv.tsc
Ngay từ bài #1, bạn đã ghi các yêu cầu rõ ràng trong file:
Thì tôi đã lưu ý về điều này nên trong hàm vẫn tôn trọng và lưu giữ điều kiện giống bạn đã ghi, tức >=1 hoặc <1. Số 1 này tôi hiểu là ý bạn muốn biến thiên tùy theo thực tế.
Để xử lý vấn đề của bạn thì phải tính trên các mảng, nên công thức, dù gì dù, cũng dài và nặng. Muốn nhẹ nhàng hơn, thì buộc lòng:
1/ Sử dụng cột phụ (như bạn giải quyết), hoặc sheet phụ (như cách tôi trong file đính kèm)
2/ Hoặc phải sử dụng VBA như bạn đã được anh @HieuCD giúp cho bạn bài trên.
Tôi rất thông hiểu: nhiều khi trong lúc đụng phải vấn đề, thì bạn chỉ muốn tự mình xử lý ngay, vì ngại nhờ người khác thêm phiền toái. Chính vì vậy tôi đưa thêm cách xử lý bằng hàm Countif() để bạn tham khảo, cũng như về cách sử dụng Countif() sao cho đếm chính xác, để sau này gặp vấn đề tương tự cần đến nó, thì bạn có thể xử lý tức khắc.
Bạn xem file kèm.
Thân
Không có chi đâu bạn!Cảm ơn bạn @Phan Thế Hiệp rất nhiều, mặc dù mình mới vào diễn đàn hôm qua nhưng đã được đọc các hàm bạn viết và của bạn @HieuCD nữa.
Phải nói rằng 2 bạn rất nhiệt huyết với diễn đàn và những bài giải dễ hiểu, chính xác
Các bạn rất nhiệt tình giải thích cách sử dụng hàm và các tính năng của hàm......., giúp đỡ các thành viên nhiệt tình
Tôi thấy nhiều bài rất khó thế mà bạn vẫn dùng công thức trong Excel để làm được
Xin cảm ơn bạn @Phan Thế Hiệp rất nhiều
Chúc bạn luôn luôn gặp nhiều may mắn.


Cảm ơn bạn @HieuCD rất nhiềuChỉnh lại code
Mã:Function Join_Num(ByVal comStr, ByVal Deli As String, ParamArray sArr()) As String Dim Arr, iTem, nArr(0 To 99) As Long, cArr() Dim i As Long, j As Long, n As Long Dim iChar As String, tmp, Res As String cArr = Array(">=", "<=", ">", "<", "=") 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 If Len(tmp) = 2 Then 'Chi xet so co 2 ky tu tmp = CLng(tmp) If tmp < 100 Then nArr(tmp) = nArr(tmp) + 1 End If tmp = "" End If Next j End If End If Next Next n = 4: tmp = comStr For i = 0 To 4 If InStr(1, comStr, cArr(i)) > 0 Then tmp = CLng(Replace(comStr, cArr(i), "")) n = i Exit For End If Next i For i = 0 To 99 Select Case n Case 0 If nArr(i) >= tmp Then Res = Res & Deli & Format(i, "00") Case 1 If nArr(i) <= tmp Then Res = Res & Deli & Format(i, "00") Case 2 If nArr(i) > tmp Then Res = Res & Deli & Format(i, "00") Case 3 If nArr(i) < tmp Then Res = Res & Deli & Format(i, "00") Case 4 If nArr(i) = tmp Then Res = Res & Deli & Format(i, "00") End Select Next i If Len(Res) = 0 Then Join_Num = "K" Else Join_Num = Mid(Res, Len(Deli) + 1, Len(Res)) End If End Function