繁体   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