xin chỉ cách sắp xếp các số trong 1 ô theo thứ tự (2 người xem)

Người dùng đang xem chủ đề này

uctrailaonhan

Thành viên mới
Tham gia
12/12/11
Bài viết
1
Được thích
0
xin chào các bác, em có 1 vấn đề mà không tìm ra cách giải quyết, mang lên đây mong các bác hướng dẫn giúp

file excell của em có 1 cột, trong mỗi ô của cột đó có nhiều số tự nhiên cách nhau 1 dấu phẩy. Em muốn sắp xếp các số trong ô đó theo thứ tự tăng dần thì làm thế nào?
( trong 1 ô có nhiều số nha các bác, chứ không phải mỗi số 1 ô)
em xin cảm ơn!!!


vd: trong 1 ô có các số : 21, 19, 35, 11, 69, 89, 41, 86, 32
có cách nào xắp sếp các số trong ô đó thoe thứ tự ko ah
 
Bạn thử cách củ chuối hột này xem sao

(1) Đếm các dấu fẩy;
Khai báo mảng có số fần tử hơn số dấu fẩy 1
& Khai báo 1 biến tạm, như Tmp

(2) Cắt chuỗi số cho vô mảng

(3) tạo 2 vòng lặp, vòng ngoài khoảng 4 đến 5 lần

Vòng trong duyệt từ đầu đến trước cuối mảng;
Vòng này ta sẽ thực hiện việc chuyển số nhỏ hơn lên trước nhờ biến Tmp làm trung gian

Thường thì sau 4 đến 5 lần chạy vòng lặp trong thì mảng số liệu sẽ được sắp xếp tấp lự, từ nhỏ đến lớn!

)(&&@@
 
Upvote 0
xin chào các bác, em có 1 vấn đề mà không tìm ra cách giải quyết, mang lên đây mong các bác hướng dẫn giúp

file excell của em có 1 cột, trong mỗi ô của cột đó có nhiều số tự nhiên cách nhau 1 dấu phẩy. Em muốn sắp xếp các số trong ô đó theo thứ tự tăng dần thì làm thế nào?
( trong 1 ô có nhiều số nha các bác, chứ không phải mỗi số 1 ô)
em xin cảm ơn!!!


vd: trong 1 ô có các số : 21, 19, 35, 11, 69, 89, 41, 86, 32
có cách nào xắp sếp các số trong ô đó thoe thứ tự ko ah
1> Cần 2 hàm hổ trợ:
PHP:
Private Function Sort1DArray(ByVal Arr, Optional ByVal isText As Boolean = False, Optional ByVal isDESC As Boolean = False)
  Dim sCommand As String
  sCommand = "('" & Join(Arr, vbBack) & "').split('" & vbBack & "').sort("
  If isText Then
    sCommand = sCommand & ")"
  Else
    sCommand = sCommand & "function(a,b){return (a-b)})"
  End If
  If isDESC Then sCommand = sCommand & ".reverse()"
  sCommand = sCommand & ".join('" & vbBack & "')"
  With CreateObject("MSScriptControl.ScriptControl")
    .Language = "JavaScript"
    Sort1DArray = Split(.Eval(sCommand), vbBack)
  End With
End Function
PHP:
Private Function String2Array(ByVal Text As String)
  Dim tmp As String
  If Trim(Text) = "" Then String2Array = "": Exit Function
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = ""
    tmp = Replace(Trim(.Replace(Text, " ")), "  ", " ")
  End With
  String2Array = Split(tmp, " ")
End Function
2> Hàm chính
PHP:
Function StrSort(ByVal Text As String, Optional Sep As String = "", Optional Order As Boolean = False) As String
  Dim Arr, tmp
  On Error Resume Next
  If Sep = "" Then
    Arr = String2Array(Text)
  Else
    Arr = Split(Text, Sep)
  End If
  tmp = Sort1DArray(Arr, False, Order)
  StrSort = Join(tmp, Sep)
End Function
-----------------
Cú pháp
Mã:
StrSort (Chuổi , dấu phân cách, Sort tăng hay giảm dần)
Áp dụng:
- Giả sự chuổi 21, 19, 35, 11, 69, 89, 41, 86, 32 nằm tại A2, ta gõ công thức này vào B2
PHP:
=StrSort($A2,", ")
nghĩa là dựa vào dấu phân cách là dấu ", " ta sẽ sort chuổi trên theo thứ tự tăng dần
Nếu viết
PHP:
=StrSort($A2,", ",TRUE)
Nghĩa là sort chuổi theo thứ tự giảm dần
Ngoài ra, nếu bỏ qua dấu phân cách có nghĩa sẽ sort từng ký tự của chuổi... Ví dụ cell A3 chứa chuổi 211935116989418633, để sort chuổi này theo thứ tự tăng dần ta gõ công thức:
PHP:
=StrSort($A3)
Hoặc giảm dần
PHP:
=StrSort($A3,,TRUE)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
xin chào các bác, em có 1 vấn đề mà không tìm ra cách giải quyết, mang lên đây mong các bác hướng dẫn giúp
file excell của em có 1 cột, trong mỗi ô của cột đó có nhiều số tự nhiên cách nhau 1 dấu phẩy. Em muốn sắp xếp các số trong ô đó theo thứ tự tăng dần thì làm thế nào?
( trong 1 ô có nhiều số nha các bác, chứ không phải mỗi số 1 ô)
em xin cảm ơn!!!
vd: trong 1 ô có các số : 21, 19, 35, 11, 69, 89, 41, 86, 32
có cách nào xắp sếp các số trong ô đó thoe thứ tự ko ah
Mình xin góp một hàm cho bài này
Mã:
Public Function Xep(Cll As String, Dk As String, Optional Giam As String) As String
    Dim Tach, I, Mg(1 To 10000, 1 To 1), d, So, Tam
    Set d = CreateObject("scripting.dictionary")
        For I = 1 To 10000
            If Not d.exists(I) Then d.Add (I), ""
        Next I
            Tach = Split(Cll, Dk)
            For I = LBound(Tach) To UBound(Tach)
                So = Val(Tach(I))
                If d.exists(So) Then Mg(So, 1) = IIf(Mg(So, 1) = "", So, Mg(So, 1) & Dk & So)
            Next I
                If UCase(Giam) = "G" Then
                    For I = 10000 To 1 Step -1
                        If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                    Next I
                Else
                        For I = 1 To 10000
                            If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                        Next I
                End If
    Xep = Left(Tam, Len(Tam) - 1)
End Function
Thân
Híc, tối qua xỉn quá, giờ mới thấy thế này là đủ
Mã:
Public Function Teo(Cll As String, Dk As String, Optional Giam As String) As String
    Dim Tach, I, Mg(1 To 10000, 1 To 1), So, Tam
            Tach = Split(Cll, Dk)
            For I = LBound(Tach) To UBound(Tach)
                So = Val(Tach(I))
                Mg(So, 1) = IIf(Mg(So, 1) = "", So, Mg(So, 1) & Dk & So)
            Next I
                If UCase(Giam) = "G" Then
                    For I = 10000 To 1 Step -1
                        If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                    Next I
                Else
                        For I = 1 To 10000
                            If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                        Next I
                End If
    Teo = Left(Tam, Len(Tam) - 1)
End Function
Lại ..híc
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình xin góp một hàm cho bài này
Mã:
Public Function Xep(Cll As String, Dk As String, Optional Giam As String) As String
    Dim Tach, I, Mg(1 To 10000, 1 To 1), d, So, Tam
    Set d = CreateObject("scripting.dictionary")
        For I = 1 To 10000
            If Not d.exists(I) Then d.Add (I), ""
        Next I
            Tach = Split(Cll, Dk)
            For I = LBound(Tach) To UBound(Tach)
                So = Val(Tach(I))
                If d.exists(So) Then Mg(So, 1) = IIf(Mg(So, 1) = "", So, Mg(So, 1) & Dk & So)
            Next I
                If UCase(Giam) = "G" Then
                    For I = 10000 To 1 Step -1
                        If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                    Next I
                Else
                        For I = 1 To 10000
                            If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                        Next I
                End If
    Xep = Left(Tam, Len(Tam) - 1)
End Function
Thân
Híc, tối qua xỉn quá, giờ mới thấy thế này là đủ
Mã:
Public Function Teo(Cll As String, Dk As String, Optional Giam As String) As String
    Dim Tach, I, Mg(1 To 10000, 1 To 1), So, Tam
            Tach = Split(Cll, Dk)
            For I = LBound(Tach) To UBound(Tach)
                So = Val(Tach(I))
                Mg(So, 1) = IIf(Mg(So, 1) = "", So, Mg(So, 1) & Dk & So)
            Next I
                If UCase(Giam) = "G" Then
                    For I = 10000 To 1 Step -1
                        If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                    Next I
                Else
                        For I = 1 To 10000
                            If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                        Next I
                End If
    Teo = Left(Tam, Len(Tam) - 1)
End Function
Lại ..híc
Theo như giải thuật của anh thì làm sao sort được số âm?
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Upvote 0
Theo như giải thuật của anh thì làm sao sort được số âm?
Ẹc... Ẹc...
Híc, Mình có viết
Mình xin góp một hàm cho bài này
và, đề bài là:
uctrailaonhan
xin chỉ cách sắp xếp các số trong 1 ô theo thứ tựxin chào các bác, em có 1 vấn đề mà không tìm ra cách giải quyết, mang lên đây mong các bác hướng dẫn giúp
file excell của em có 1 cột, trong mỗi ô của cột đó có nhiều số tự nhiên cách nhau 1 dấu phẩy. Em muốn sắp xếp các số trong ô đó theo thứ tự tăng dần thì làm thế nào?
( trong 1 ô có nhiều số nha các bác, chứ không phải mỗi số 1 ô)
em xin cảm ơn!!!
vd: trong 1 ô có các số : 21, 19, 35, 11, 69, 89, 41, 86, 32
có cách nào xắp sếp các số trong ô đó thoe thứ tự ko ah
Đã bảo chỉ giải quyết cho bài này mà. Hihi
Nếu mở rộng là số nguyên vẫ giải quyết được theo hướng này
 
Lần chỉnh sửa cuối:
Upvote 0
)[/code]
Áp dụng:
- Giả sự chuổi 21, 19, 35, 11, 69, 89, 41, 86, 32 nằm tại A2, ta gõ công thức này vào B2
PHP:
=StrSort($A2,", ")
Giả sự chuổi 21, 19, 35, 11, 69, 89, 41, 86, 32,99 nằm tại A2, thì sẽ báo kết quả không chính xác đại ca à( sao vậy ta)
 

File đính kèm

  • hinhldt.jpg
    hinhldt.jpg
    50 KB · Đọc: 67
Upvote 0
Giả sự chuổi 21, 19, 35, 11, 69, 89, 41, 86, 32,99 nằm tại A2, thì sẽ báo kết quả không chính xác đại ca à( sao vậy ta)
Tôi kiểm tra đâu thấy có vấn đề gì chứ

Capture.JPG


-------------------
Ah... biết rồi
Trong công thức, dấu phân cách của tôi là dấu ", " (dấu phẩy rồi đến dấu cách) ---> Bạn lại viết số 99 dính liền, sao mà được chứ
Muốn thế thì phải sửa lại công thức =StrSort($A2,",",TRUE)
là xong
Ẹc... Ẹc... Đồng chí này hay "ăn gian" quá
 
Lần chỉnh sửa cuối:
Upvote 0
A há ! Té ra thế này cũng được

Cũng thấy lạ, hổng hiểu luôn, cái này dùng sắp xếp số nguyên cũng được
Mã:
Public Function Xep(Cll As String, Dk As String, Optional Giam As String) As String
    Dim Mg(-1000 To 1000, 1 To 1), I, Tach, So, Tam
    Tach = Split(Cll, ",")
        For I = LBound(Tach) To UBound(Tach)
            So = Val(Tach(I))
            Mg(So, 1) = IIf(Mg(So, 1) = "", So, Mg(So, 1) & Dk & So)
        Next I
            If UCase(Giam) = "G" Then
                For I = UBound(Mg) To LBound(Mg) Step -1
                    If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                Next I
            Else
                For I = LBound(Mg) To UBound(Mg)
                    If Mg(I, 1) <> "" Then Tam = Tam & Mg(I, 1) & Dk
                Next I
            End If
    Xep = Left(Tam, Len(Tam) - 1)
End Function
 

File đính kèm

Upvote 0
Cho mình hỏi chút, mình có 3 ô đã có sẵn các con số sắp xếp lộn xộn, mình muốn lọc ra thành 3 ô sắp xếp theo thứ tự tăng dần (vẫn là 3 ô nhưng thứ tự các con số trong ô đã được sắp xếp lại) thì phải làm thế nào, xin lỗi bác chủ thớt vì vô duyên đã nhảy vào nhé! Mình có cái hình minh họa đây, cảm ơn sự giúp đỡ của mọi người!
 

File đính kèm

  • excel.jpg
    excel.jpg
    45.8 KB · Đọc: 38
Upvote 0
Cho mình hỏi chút, mình có 3 ô đã có sẵn các con số sắp xếp lộn xộn, mình muốn lọc ra thành 3 ô sắp xếp theo thứ tự tăng dần (vẫn là 3 ô nhưng thứ tự các con số trong ô đã được sắp xếp lại) thì phải làm thế nào, xin lỗi bác chủ thớt vì vô duyên đã nhảy vào nhé! Mình có cái hình minh họa đây, cảm ơn sự giúp đỡ của mọi người!
Vác cái búa thật to xử bài này
Copy code này cho vào 1 Module
Tại Z3 nhập = SapXep(V3)
PHP:
Function SapXep(ByVal Cell As String) As String
Dim Data, Temp(), I&
Data = Split(Cell, ",")
ReDim Temp(UBound(Data))
For I = 0 To UBound(Data)
   Temp(I) = CLng(Trim(Data(I)))
Next
Sort Temp, LBound(Data), UBound(Data)
SapXep = Join(Temp, ",")
End Function
Function Sort(Arr(), Min As Long, Max As Long)
  Dim MidVal As Variant, TempVal As Variant
  Dim TempMin As Long, TempMax As Long
  TempMin = Min:  TempMax = Max
  MidVal = Arr((Min + Max) \ 2)
  Do While TempMin <= TempMax
    Do While Arr(TempMin) < MidVal
      TempMin = TempMin + 1
      If Max = TempMin Then Exit Do
    Loop
    Do While MidVal < Arr(TempMax)
      TempMax = TempMax - 1
      If Min = TempMax Then Exit Do
    Loop
    If TempMin <= TempMax Then
      TempVal = Arr(TempMin)
      Arr(TempMin) = Arr(TempMax)
      Arr(TempMax) = TempVal
      TempMin = TempMin + 1
      TempMax = TempMax - 1
    End If
  Loop
  If Min < TempMax Then Sort Arr, Min, TempMax
  If TempMin < Max Then Sort Arr, TempMin, Max
End Function
 
Upvote 0
Vác cái búa thật to xử bài này
Copy code này cho vào 1 Module
Tại Z3 nhập = SapXep(V3)
PHP:
Function SapXep(ByVal Cell As String) As String
Dim Data, Temp(), I&
Data = Split(Cell, ",")
ReDim Temp(UBound(Data))
For I = 0 To UBound(Data)
   Temp(I) = CLng(Trim(Data(I)))
Next
Sort Temp, LBound(Data), UBound(Data)
SapXep = Join(Temp, ",")
End Function
Function Sort(Arr(), Min As Long, Max As Long)
  Dim MidVal As Variant, TempVal As Variant
  Dim TempMin As Long, TempMax As Long
  TempMin = Min:  TempMax = Max
  MidVal = Arr((Min + Max) \ 2)
  Do While TempMin <= TempMax
    Do While Arr(TempMin) < MidVal
      TempMin = TempMin + 1
      If Max = TempMin Then Exit Do
    Loop
    Do While MidVal < Arr(TempMax)
      TempMax = TempMax - 1
      If Min = TempMax Then Exit Do
    Loop
    If TempMin <= TempMax Then
      TempVal = Arr(TempMin)
      Arr(TempMin) = Arr(TempMax)
      Arr(TempMax) = TempVal
      TempMin = TempMin + 1
      TempMax = TempMax - 1
    End If
  Loop
  If Min < TempMax Then Sort Arr, Min, TempMax
  If TempMin < Max Then Sort Arr, TempMin, Max
End Function

Vác cái búa này ngộp thở quá.
Thử "cây đao" nhỏ hơn chút coi sao.
=LUXUBU(A1,",")
PHP:
Public Function LuXuBu(Rng As Range, DK As String) As String
Dim Tem, iMax, iMin, L As Long, I As Long, Arr(), C As Long
Tem = Split(Rng, DK)
For I = 0 To UBound(Tem)
    If Val(Tem(I)) < iMin Then iMin = Tem(I)
    If Val(Tem(I)) > iMax Then iMax = Tem(I)
Next I
L = iMax - iMin + 1
ReDim Arr(1 To L, 1 To 1)
For I = 0 To UBound(Tem)
    C = IIf(Val(Tem(I)) <> 0, Val(Tem(I)) - iMin + 1, Abs(iMin) + 1)
    Arr(C, 1) = Arr(C, 1) & DK & Tem(I)
Next I
For I = 1 To L
    If Arr(I, 1) <> Empty Then LuXuBu = LuXuBu & Arr(I, 1)
Next I
LuXuBu = Right(LuXuBu, Len(LuXuBu) - 1)
End Function
 
Upvote 0
dhn46 góp vui thêm cách cổ truyền này
Mã:
Function SapXep(Str As String, Optional Giam As String)
    Dim Arr, i As Long
    Arr = Split(Str, ",")
    With CreateObject("System.Collections.ArrayList")
        For i = 0 To UBound(Arr)
            .Add CLng(Arr(i))
        Next
        .Sort
        If UCase(Giam) = "G" Then
            .Reverse
        Else
            .Sort
        End If
        Arr = .ToArray
    End With
    SapXep = Join(Arr, ",")
End Function
 
Upvote 0
dhn46 góp vui thêm cách cổ truyền này
Mã:
Function SapXep(Str As String, Optional Giam As String)
    Dim Arr, i As Long
    Arr = Split(Str, ",")
    With CreateObject("System.Collections.ArrayList")
        For i = 0 To UBound(Arr)
            .Add CLng(Arr(i))
        Next
        .Sort
        If UCase(Giam) = "G" Then
            .Reverse
        Else
            .Sort
        End If
        Arr = .ToArray
    End With
    SapXep = Join(Arr, ",")
End Function
Ghét cái công cụ ArrayList vì không phải máy nào cũng chạy được nên ngại dùng lắm rồi. Máy mình xài được, đem quá máy khác nó trơ mặt ra.
 
Upvote 0
Ghét cái công cụ ArrayList vì không phải máy nào cũng chạy được nên ngại dùng lắm rồi. Máy mình xài được, đem quá máy khác nó trơ mặt ra.
Thôi thì ai dùng cũng cái NetFrameWork để "tạo điều kiện" cho ứng dụng khác nữa. Ah mà dùng Office 2010 để nạp key mà dùng (theo kiểu ..abc -\\/.) thì chắc cũng đã có cái net này rồi anh nhỉ?
 
Upvote 0
dhn46 góp vui thêm cách cổ truyền này
Mã:
Function SapXep(Str As String, Optional Giam As String)
    Dim Arr, i As Long
    Arr = Split(Str, ",")
    With CreateObject("System.Collections.ArrayList")
        For i = 0 To UBound(Arr)
            .Add CLng(Arr(i))
        Next
        .Sort
        If UCase(Giam) = "G" Then
            .Reverse
        Else
            .Sort
        End If
        Arr = .ToArray
    End With
    SapXep = Join(Arr, ",")
End Function

Viết lại như thế này gọn hơn:

Mã:
Function SapXep(Str As String, Optional Giam As String)
    Dim so, i As Long
    With CreateObject("System.Collections.ArrayList")
        For each so in Split(Str, ",")
            .Add CLng(so)
        Next
        .Sort
        If UCase(Giam) = "G" Then
            .Reverse
        Else
            .Sort
        End If
       SapXep = Join(.ToArray, ",")
    End With
End Function

Nếu dữ liệu là số thì dùng Radix Sort - sort theo chỉ số mảng, khoẻ nhất.
 
Upvote 0
Thêm một cách nữa cho bạn tham khảo
PHP:
Function SapXep(Str As String, Optional Giam As Boolean)
    With CreateObject("MSScriptControl.ScriptControl")
        .Language = "JavaScript"
        SapXep = .Eval("('" & Str & "').split(',').sort()" & IIf(Giam, ".reverse()", ""))
    End With
End Function
 
Upvote 0
Thêm một cách nữa cho bạn tham khảo
PHP:
Function SapXep(Str As String, Optional Giam As Boolean)
    With CreateObject("MSScriptControl.ScriptControl")
        .Language = "JavaScript"
        SapXep = .Eval("('" & Str & "').split(',').sort()" & IIf(Giam, ".reverse()", ""))
    End With
End Function

Cách truyền Array như thế này sẽ bị JavaScript mặc định kiểu phần tử là Object, và sẽ bị sort theo kiểu string. Tức là 10 sẽ đi trước 2.

Để buộc JavaScript phải compare theo kiểu số thì phải gởi cho nó một hàm so sánh.

SapXep = .Eval("('" & Str & "').split(',').sort(function (a, b) { return a - b; })" & IIf(Giam, ".reverse()", ""))

Lưu ý: đây chỉ là cách giản dị dùng để demo thôi. Dùng code a - b có thể gây ra tràn số. Nếu dùng trong trường hợp quan trọng thì code của hàm so sánh phức tạp hơn nhiều.
 
Upvote 0
Cách truyền Array như thế này sẽ bị JavaScript mặc định kiểu phần tử là Object, và sẽ bị sort theo kiểu string. Tức là 10 sẽ đi trước 2.

Để buộc JavaScript phải compare theo kiểu số thì phải gởi cho nó một hàm so sánh.

SapXep = .Eval("('" & Str & "').split(',').sort(function (a, b) { return a - b; })" & IIf(Giam, ".reverse()", ""))

Lưu ý: đây chỉ là cách giản dị dùng để demo thôi. Dùng code a - b có thể gây ra tràn số. Nếu dùng trong trường hợp quan trọng thì code của hàm so sánh phức tạp hơn nhiều.
Làm theo dữ liệu của tác giả mà. Dữ liệu là các chữ số nên so sánh kiểu string hay number gì thì kết quả cũng như nhau.
 
Upvote 0
Làm theo dữ liệu của tác giả mà. Dữ liệu là các chữ số nên so sánh kiểu string hay number gì thì kết quả cũng như nhau.

Xin lỗi, tôi thấy các bài khác sort theo kiểu số cho nên ngỡ bài này sort số.
SapXep("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15") = "1,10,11,12,13,14,15,2,3,4,5,6,7,8,9"
Dùng SapXep ở bài #11:
SapXep("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15") = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"
 
Upvote 0
Nếu dữ liệu trong 1 ô có ít số thì chắc code gọn vầy cũng được
PHP:
Function SapXep(Cell, del)
Dim tam, Item, i&, n&, k&, kq$
tam = Split(Cell, del)
Do
   k = k + 1
   For Each Item In tam
      If k = CLng(Trim(Item)) Then
         n = n + 1
         kq = kq & del & Trim(Item)
      End If
   Next
Loop Until n > UBound(tam)
SapXep = Replace(kq, del, "", , 1)
End Function
 
Upvote 0
Nếu dữ liệu trong 1 ô có ít số thì chắc code gọn vầy cũng được
PHP:
Function SapXep(Cell, del)
Dim tam, Item, i&, n&, k&, kq$
tam = Split(Cell, del)
Do
   k = k + 1
   For Each Item In tam
      If k = CLng(Trim(Item)) Then
         n = n + 1
         kq = kq & del & Trim(Item)
      End If
   Next
Loop Until n > UBound(tam)
SapXep = Replace(kq, del, "", , 1)
End Function
Nhưng nếu người ta có số âm thì sao? Ẹc... Ẹc...
Ai mà biết được
 
Upvote 0
Nhưng nếu người ta có số âm thì sao? Ẹc... Ẹc...
Ai mà biết được

Đây là kiểu làm ngược của Radix Sort (chỉ số mảng). Điều kiện thông thường của Radixx Sort là số max không lớn quá, và càng nhiều số càng hiệu quả. Vì cách này làm ngược cho nên phải đặt điều kiện ít số.

Nếu trị max là m và con số phần tử là n thì cách này đọc m*n lần; Radix Sort đọc m+n lần.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom