Cần giúp: Sắp xếp lại dãy ký tự số thành tăng dần

Liên hệ QC

xuongrongdat

Có bao giờ bạn tự hỏi "Tôi là ai?"
Tham gia
30/6/08
Bài viết
1,704
Được thích
1,572
Donate (Momo)
Donate
Nghề nghiệp
Vô tư cùng bạn bè đi khắp nơi.
Như tiêu đề, mình nhờ mọi người giúp xử lý chuỗi ký tự số lại để sắp xếp chúng thành tăng dần như hình sau:
1611218457638.png

Xin cảm ơn.
 

File đính kèm

  • hoiGPE125.xlsx
    8.5 KB · Đọc: 19
dùng office bao nhiêu thế, cái bài này mà dùng hàm là dài lắm đối với 2013 trở xuống. Mấy hàm mới liên quan đến chuỗi chưa dùng nên không biết có áp dụng được không
 
dùng office bao nhiêu thế, cái bài này mà dùng hàm là dài lắm đối với 2013 trở xuống. Mấy hàm mới liên quan đến chuỗi chưa dùng nên không biết có áp dụng được không
2016 á anh ơi. Anh xài hàm Concat hả? Mấy hàm mới của Office 2019 là em thua á.
Nhớ luôn ta, hihi. Đúng òi.
 
Google Sheets lèo cái được.
Excel 365 mà có hàm tương tự thì làm tương tự.

1611220283599.png
 
Như tiêu đề, mình nhờ mọi người giúp xử lý chuỗi ký tự số lại để sắp xếp chúng thành tăng dần như hình sau:
View attachment 253308

Xin cảm ơn.
Công thức
Mã:
=TEXT(SUM(SMALL(--MID(B4,TRANSPOSE(ROW(INDIRECT("1:"&LEN(B4)))),1),ROW(INDIRECT("1:"&LEN(B4))))*10^(LEN(B4)-ROW(INDIRECT("1:"&LEN(B4))))),REPT("0",LEN(B4)))
nhấn Ctrl+Shirt+Enter
 
Dạo này xuongrongdat thích sưu tầm xương rồng rồi quăng lên đây nhỉ? Mình Ex 2016 nên im hơi lặng tiếng.
 
Không có cài hàm tự tạo đi hoặc dùng cột phụ cho nhàn, định nối thế này nhưng nhiều số công thức dài quá
Mã:
IFERROR(AGGREGATE(15;6;1*MID(B4;ROW($1:$16);1);1);"")&IFERROR(AGGREGATE(15;6;1*MID(B4;ROW($1:$16);1);2);"")
bao số nối bây nhiêu &...3 4 5 6
 
Như tiêu đề, mình nhờ mọi người giúp xử lý chuỗi ký tự số lại để sắp xếp chúng thành tăng dần như hình sau:
View attachment 253308

Xin cảm ơn.
Dùng thử cái function này xem được không.
Mã:
Function xapxep(ByVal chuoi As String) As String
        Dim i As Long, arr, a As Integer, b As Integer, j As Integer, s As String
        a = Len(chuoi)
        ReDim arr(1 To a)
        For i = 1 To a
            arr(i) = CLng(Mid(chuoi, i, 1))
        Next i
        For i = 1 To a
            For j = a - 1 To i Step -1
                If arr(j) > arr(j + 1) Then
                   b = arr(j + 1)
                   arr(j + 1) = arr(j)
                   arr(j) = b
                End If
            Next j
        Next i
        For i = 1 To a
            s = s & arr(i)
        Next i
        xapxep = s
End Function
Mã:
=xapxep(B4)
 
Dạo này chịu khó hỏi bài ghê
 

File đính kèm

  • hoiGPE125.xlsx
    10.3 KB · Đọc: 7
Dùng thử cái function này xem được không.
Mã:
Function xapxep(ByVal chuoi As String) As String
        Dim i As Long, arr, a As Integer, b As Integer, j As Integer, s As String
        a = Len(chuoi)
        ReDim arr(1 To a)
        For i = 1 To a
            arr(i) = CLng(Mid(chuoi, i, 1))
        Next i
        For i = 1 To a
            For j = a - 1 To i Step -1
                If arr(j) > arr(j + 1) Then
                   b = arr(j + 1)
                   arr(j + 1) = arr(j)
                   arr(j) = b
                End If
            Next j
        Next i
        For i = 1 To a
            s = s & arr(i)
        Next i
        xapxep = s
End Function
Mã:
=xapxep(B4)
Chưz số chúng có thứ tự sẵn của chúng. Sort bằng phươngn pháp "lấy vị trí" khoẻ hơn:

Function SapChuSo(s As String) As String
' hàm sắp xếp các chữ số trong chuỗi cho đúng thứ tự
Dim a(0 To 9) As String, i As Integer, n As Integer
For i = 1 To Len(s)
n = Val(Mid(s, i, 1))
a(n) = a(n) & n
Next i
SapChuSo = Join(a, "")
End Function
 
Tôi đề nghị công thức cho C4
Mã:
=TEXT(SUM(IFERROR(AGGREGATE(15,6,--MID(B4,ROW(A$1:A$10),1),ROW(A$1:A$10)),0)*10^(LEN(B4)-ROW(A$1:A$10))),REPT("0",LEN(B4)))
Kết thúc công thức bằng Ctrl + Shift + Enter.

Công thức trên giả thiết là các số có nhiều nhất 10 chữ số. Nếu các số có nhiều nhất vd. 15 chữ số thì thay 10 trong ROW(...) bằng 15
 
Chưz số chúng có thứ tự sẵn của chúng. Sort bằng phươngn pháp "lấy vị trí" khoẻ hơn:

Function SapChuSo(s As String) As String
' hàm sắp xếp các chữ số trong chuỗi cho đúng thứ tự
Dim a(0 To 9) As String, i As Integer, n As Integer
For i = 1 To Len(s)
n = Val(Mid(s, i, 1))
a(n) = a(n) & n
Next i
SapChuSo = Join(a, "")
End Function
Vâng anh.Em hay không để ý dùng mảng để sắp xếp.Nếu về con số mà dùng để lọc trùng với xắp xếp có vẻ dùng mảng là tiện nhất.
 
Web KT
Back
Top Bottom