将Excel VBA号和文本数组排序为FUNCTION [重复]

问题描述 投票:0回答:1

如果我在单元格A2中有值= 2,4,8,6,12,19,18,23,35,78,101,38,30,205,2我想按单元格B2中的最小到最大或最大到最小排序。那么我想要的结果应该是= 2,2,4,6,8,12,19,18,23,30,35,38,78,101,101,205或(大到小== 205,101,101,78,38,35,30,23, 18,19,12,8,6,4,2,2如果我有textvaluse,例如A3 = WPN / 01,AFF / 02,PROP / 4,ENG / 03,那么我想按字母顺序对我想要的结果进行排序单元格B3 = AFF / 02,ENG / 03,PROP / 4,WPN / 1sheet is attached

excel excel-vba excel-formula excel-2007
1个回答
1
投票

以下功能将适用于数字,文本和字母数字(数字和文本均包含)字符串。

Function BubbleSortMix(myString As String, deLmt As String)
Dim arr
arr = split(Trim(myString), deLmt)
  Dim strTemp As String
  Dim i As Long
  Dim j As Long
  Dim lngMin As Long
  Dim lngMax As Long
  lngMin = LBound(arr)
  lngMax = UBound(arr)
  For i = lngMin To lngMax - 1
    For j = i + 1 To lngMax
    If IsNumeric((arr(i))) = True And IsNumeric((arr(j))) = True Then
      If Val(arr(i)) > Val(arr(j)) Then
        strTemp = arr(i)
        arr(i) = arr(j)
        arr(j) = strTemp
      End If
      Else
      If (arr(i)) > (arr(j)) Then
        strTemp = arr(i)
        arr(i) = arr(j)
        arr(j) = strTemp
      End If
    End If
    Next j
  Next i
BubbleSortMix = Join(arr, deLmt)
End Function

enter image description hereenter image description here

© www.soinside.com 2019 - 2024. All rights reserved.