簡體   English   中英

Excel 2016 - 按升序對單元格中的值進行排序

[英]Excel 2016 - Sort value in cell in ascending order

我目前有一個包含一些值的單元格,用逗號分隔。 我希望按升序對它們進行排序。

樣本輸入(單個單元格中的值):

樣本輸入圖像

示例 Output(單個單元格中的值):

樣本輸出圖像

在對行和列進行排序時,我已經看到了很多答案,但我似乎無法按升序對單個單元格中的值進行排序。 是否可以按升序對單個單元格中的值進行排序? 或者有解決方法嗎?

一些解釋/文檔將不勝感激,因為我是 VBA 的初學者。 謝謝您的幫助。

請嘗試用逗號分隔單個單元格中的數據,然后對其進行排序並將所有這些數據組合在一起?

注釋為您提供了多種對數組進行排序的方法。 無論對錯,我都提供了我自己對舊的 VBA 主題的看法,以及以分隔格式輸出字符串的擴展部分。 要么接受,要么離開它...!

您應該能夠直接從任何給定的單元格中參考下面的 function,就像在 Excel 中的任何內置 function 一樣。

Public Function SplitAndSortAscending(ByVal strText As String, ByVal strDelimiter As String) As String
    Dim arrData() As String, arrNewData() As String, i As Long, x As Long, y As Long
    
    arrData = Split(strText, strDelimiter)
    ReDim arrNewData(UBound(arrData))
    
    For i = 0 To UBound(arrData)
        For x = 0 To UBound(arrNewData)
            If arrData(i) < arrNewData(x) Or arrNewData(x) = "" Then
                For y = UBound(arrNewData) To x + 1 Step -1
                    arrNewData(y) = arrNewData(y - 1)
                Next
                
                arrNewData(x) = arrData(i)
                Exit For
            End If
        Next
    Next
    
    For i = 0 To UBound(arrNewData)
        SplitAndSortAscending = SplitAndSortAscending & strDelimiter & arrNewData(i)
    Next
    
    SplitAndSortAscending = Mid(SplitAndSortAscending, Len(strDelimiter) + 1)
End Function

如果你有 O365,你可以使用類似下面的東西來實現同樣的事情。 請注意,我的實現將采用1.0並將其格式化為整數,即輸出為1

=TEXTJOIN(",",TRUE,SORT(FILTERXML("<r><v>" & SUBSTITUTE(A1,",","</v><v>") & "</v></r>","//v")))

假設您提供的示例位於單元格A1中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM