【问题标题】:Function/Formula that sorts a comma seperated list alphabetically/ascending order按字母顺序/升序对逗号分隔列表进行排序的函数/公式
【发布时间】:2017-02-07 05:50:35
【问题描述】:

例如,我拥有的一个单元格具有值:

1133,1131,1141,1142,1143,1151,1132,1181

如何按升序排列?

1131,1132,1133,1141,1142,1143,1151,1181

这样做是为了处理很多不同的事情,因此希望找到一个公式或 vba 函数驱动的解决方案。

【问题讨论】:

    标签: excel vba sorting formula


    【解决方案1】:
    Option Explicit
    
    Function sortingHat(str As String, _
                        Optional delim As String = ",")
        Dim a As Long, b As Long, arr As Variant, tmp As Variant
    
        'split the string into an array
        arr = Split(str, delim)
    
        'sort the array
        For a = LBound(arr) To UBound(arr) - 1
            For b = a + 1 To UBound(arr)
                If arr(b) < arr(a) Then
                    tmp = arr(a)
                    arr(a) = arr(b)
                    arr(b) = tmp
                End If
            Next b
        Next a
    
        'join the array into a string
        sortingHat = Join(arr, delim)
    End Function
    

    【讨论】:

      【解决方案2】:

      考虑:

      Function MySort(txt As String, Sep As String) As String
      
          Dim a
      
          With CreateObject("System.Collections.ArrayList")
              For Each a In Split(txt, Sep)
                  .Add Trim$(CStr(a))
              Next
              .Sort
              MySort = Join(.ToArray, Sep)
          End With
      End Function
      

      注意:

      按照标题中的要求,该函数执行字母排序而不是数字排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 2014-02-08
        相关资源
        最近更新 更多