hongphuong1997
Thành viên tiêu biểu

- Tham gia
- 12/11/17
- Bài viết
- 773
- Được thích
- 322
- Giới tính
- Nữ
Các bạn ơi cho em hỏi có hàm nối chuỗi nào mà sắp xếp các giá trị tăng dần không nhỉ?
Cho ví dụ cái coi.Các bạn ơi cho em hỏi có hàm nối chuỗi nào mà sắp xếp các giá trị tăng dần không nhỉ?
Đây anh ơiCho ví dụ cái coi.
Đây nhé em.Đây anh ơi
Anh giúp em với nhé
Function sapxep(ParamArray mang()) As String
Dim s As String, olit As Object, T, T2 As String, T1, i As Long
Set olit = CreateObject("System.Collections.SortedList")
For Each T In mang
For Each T1 In T
T2 = T1.Value
If Not olit.ContainsKey(T2) Then
olit.Add T2, T2
End If
Next
Next
For i = 0 To olit.Count - 1
If Len(s) = 0 Then s = olit.getkey(i) Else s = s & ";" & olit.getkey(i)
Next
Set olit = Nothing
sapxep = s
End Function
=sapxep(AA2:BE7)
Đây anh ơi
Anh giúp em với nhé
Public Function fGpe(ByVal Rng As Range, Deli As String) As String
Dim Arr(101), Cll As Range
For Each Cll In Rng
If Cll <> Empty Then Arr(Cll.Value) = Cll.Value
Next Cll
For I = 0 To UBound(Arr)
If Arr(I) <> Empty Then fGpe = fGpe & Arr(I) & Deli
Next I
If Len(fGpe) Then fGpe = Left(fGpe, Len(fGpe) - Len(Deli))
End Function
=fGpe(AA7:BE7;";")
Bạn tham khảo thêm:Đây anh ơi
Anh giúp em với nhé
Function JoinTextH(ByVal tSort, ByVal Delimiter As String, ParamArray Args() As Variant)
Dim Ndx As Long, Item, I As Long, Arr(), Str As String, aTmp
With CreateObject("System.Collections.ArrayList")
For Ndx = LBound(Args) To UBound(Args)
If TypeOf Args(Ndx) Is Range Then
For Each Item In Args(Ndx)
If Item <> Empty Then
aTmp = CLng(Item)
If Not .Contains(aTmp) Then .Add aTmp
End If
Next
Else
Arr = Array(Args(Ndx))
For I = LBound(Arr) To UBound(Arr)
aTmp = CLng(Arr(I))
If Not .Contains(aTmp) Then .Add aTmp
Next I
End If
Next
If .Count Then
If IsMissing(tSort) Then GoTo Tiep 'Không sắp xếp giống như JoinText
.Sort
If tSort <> 1 Then .Reverse 'tSort = 1 sắp xếp tăng dần ngược lại sắp xếp giảm dần
Tiep:
Str = Join(.ToArray, Delimiter)
End If
JoinTextH = Str
End With
End Function
Function LocSo(Noi As String, Mang As Range) As String
Dim sO As Integer, Cel As Range, Tmp As String
For sO = 0 To 99
For Each Cel In Mang
If Cel.Value <> "" Then
If Cel.Value = sO Then
Tmp = Tmp & Cel & Noi
Exit For
End If
End If
Next
Next sO
If Len(Tmp) Then LocSo = Left(Tmp, Len(Tmp) - Len(Noi))
End Function
Có cách nào bỏĐây nhé em.
Mã:Function sapxep(ParamArray mang()) As String Dim s As String, olit As Object, T, T2 As String, T1, i As Long Set olit = CreateObject("System.Collections.SortedList") For Each T In mang For Each T1 In T T2 = T1.Value If Not olit.ContainsKey(T2) Then olit.Add T2, T2 End If Next Next For i = 0 To olit.Count - 1 If Len(s) = 0 Then s = olit.getkey(i) Else s = s & ";" & olit.getkey(i) Next Set olit = Nothing sapxep = s End Function
Mã:=sapxep(AA2:BE7)
Có anh ơi.Gán cho nó 1 số đầu là được.Có cách nào bỏ
If Len(s) = 0
Đông vui quá, ráng góp thêm 1 cáchĐây anh ơi
Anh giúp em với nhé
Function JoinNume(ByVal Deli As String, ParamArray sRng()) As String
Dim sArr() As Long, i As Long, Rng, Cel, Tmp
ReDim sArr(0 To 99)
For Each Rng In sRng
For Each Cel In Rng
Tmp = Cel.Value
If Len(Tmp) > 0 Then
sArr(CLng(Tmp)) = 1
End If
Next
Next
Tmp = ""
For i = 0 To 99
If sArr(i) = 1 Then
Tmp = Tmp & Deli & Format(i, "00")
End If
Next
JoinNume = Mid(Tmp, Len(Deli) + 1, Len(Tmp))
End Function
Có vẻ giống của bácĐông vui quá, ráng góp thêm 1 cách
Mã:Function JoinNume(ByVal Deli As String, ParamArray sRng()) As String Dim sArr() As Long, i As Long, Rng, Cel, Tmp ReDim sArr(0 To 99) For Each Rng In sRng For Each Cel In Rng Tmp = Cel.Value If Len(Tmp) > 0 Then sArr(CLng(Tmp)) = 1 End If Next Next Tmp = "" For i = 0 To 99 If sArr(i) = 1 Then Tmp = Tmp & Deli & Format(i, "00") End If Next JoinNume = Mid(Tmp, Len(Deli) + 1, Len(Tmp)) End Function
Muốn sắp xếp nhưng không lọc trùng, tức là "có bi nhiêu chơi bấy nhiêu" đúng hông? nếu đúng thế bạn thử code này xem:......
Và sửa lại cho cháu thêm điều kiện nữa là có sắp xếp nhưng không lọc trùng được không ạ (Tức là có bao nhiêu dữ liệu thì lấy bấy nhiêu)
Public Function SapXep(Vung, DauPc)
Dim Cll, Tam, A
ReDim Tam(0 To 100, 1 To 1)
For Each Cll In Vung
A = Val(Cll)
Tam(A, 1) = Tam(A, 1) & " " & Cll
Next Cll
SapXep = Join(Application.WorksheetFunction.Transpose(Tam), " ")
SapXep = Replace(Application.WorksheetFunction.Trim(SapXep), " ", DauPc)
End Function
Cháu cảm ơn bác @concogia ạMuốn sắp xếp nhưng không lọc trùng, tức là "có bi nhiêu chơi bấy nhiêu" đúng hông? nếu đúng thế bạn thử code này xem:
Quánh vu vơ đâu đó trên bảng tính:Mã:Public Function SapXep(Vung, DauPc) Dim Cll, Tam, A ReDim Tam(0 To 100, 1 To 1) For Each Cll In Vung A = Val(Cll) Tam(A, 1) = Tam(A, 1) & " " & Cll Next Cll SapXep = Join(Application.WorksheetFunction.Transpose(Tam), " ") SapXep = Replace(Application.WorksheetFunction.Trim(SapXep), " ", DauPc) End Function
=sapxep(AA2:BE7,"; ")
Cẩn thận khi chơi xả láng
Thân
Function JoinTextH(ByVal tSort, ByVal Delimiter As String, ParamArray Args() As Variant)
Dim Ndx As Long, Item, I As Long, Arr(), Str As String, aTmp
With CreateObject("System.Collections.ArrayList")
For Ndx = LBound(Args) To UBound(Args)
If TypeOf Args(Ndx) Is Range Then
For Each Item In Args(Ndx)
If Item <> Empty Then
aTmp = CLng(Item)
If Not .Contains(aTmp) Then .Add aTmp
End If
Next
Else
Arr = Array(Args(Ndx))
For I = LBound(Arr) To UBound(Arr)
aTmp = CLng(Arr(I))
If Not .Contains(aTmp) Then .Add aTmp
Next I
End If
Next
If .Count Then
If IsMissing(tSort) Then GoTo Tiep 'Không sắp xếp giống như JoinText
.Sort
If tSort <> 1 Then .Reverse 'tSort = 1 sắp xếp tăng dần ngược lại sắp xếp giảm dần
Tiep:
Str = Join(.ToArray, Delimiter)
End If
JoinTextH = Str
End With
End Function
=JoinTextH(0;";";AA7:BE7)
|
ChịQUOTE="♫ђöล♥ßล†♥†µ♫, post: 909620, member: 1148192"]
Bạn tham khảo thêm:
HTML:Function JoinTextH(ByVal tSort, ByVal Delimiter As String, ParamArray Args() As Variant) Dim Ndx As Long, Item, I As Long, Arr(), Str As String, aTmp With CreateObject("System.Collections.ArrayList") For Ndx = LBound(Args) To UBound(Args) If TypeOf Args(Ndx) Is Range Then For Each Item In Args(Ndx) If Item <> Empty Then aTmp = CLng(Item) If Not .Contains(aTmp) Then .Add aTmp End If Next Else Arr = Array(Args(Ndx)) For I = LBound(Arr) To UBound(Arr) aTmp = CLng(Arr(I)) If Not .Contains(aTmp) Then .Add aTmp Next I End If Next If .Count Then If IsMissing(tSort) Then GoTo Tiep 'Không sắp xếp giống như JoinText .Sort If tSort <> 1 Then .Reverse 'tSort = 1 sắp xếp tăng dần ngược lại sắp xếp giảm dần Tiep: Str = Join(.ToArray, Delimiter) End If JoinTextH = Str End With End Function
=JoinTextH(0;";";AA7:BE7)
|
Chị
♫ђöล♥ßล†♥†µ♫
ơi cho em hỏi trong công thức có 3 cú pháp là:
=JoinTextH(0;";";AA7:BE7)
Em thấy 2 cái này giống nhau
=JoinTextH(1;";";AA7:BE7)
=JoinTextH(2;";";AA7:BE7)
=JoinTextH(0;";";AA7:BE7)
=JoinTextH(2;";";AA7:BE7)
ChịBạn tham khảo thêm:
HTML:Function JoinTextH(ByVal tSort, ByVal Delimiter As String, ParamArray Args() As Variant) Dim Ndx As Long, Item, I As Long, Arr(), Str As String, aTmp With CreateObject("System.Collections.ArrayList") For Ndx = LBound(Args) To UBound(Args) If TypeOf Args(Ndx) Is Range Then For Each Item In Args(Ndx) If Item <> Empty Then aTmp = CLng(Item) If Not .Contains(aTmp) Then .Add aTmp End If Next Else Arr = Array(Args(Ndx)) For I = LBound(Arr) To UBound(Arr) aTmp = CLng(Arr(I)) If Not .Contains(aTmp) Then .Add aTmp Next I End If Next If .Count Then If IsMissing(tSort) Then GoTo Tiep 'Không sắp xếp giống như JoinText .Sort If tSort <> 1 Then .Reverse 'tSort = 1 sắp xếp tăng dần ngược lại sắp xếp giảm dần Tiep: Str = Join(.ToArray, Delimiter) End If JoinTextH = Str End With End Function
Bạn xem thử
ui, được rồi chị ơiBạn xem thử