假如Excel工作表的A1單元格中包含某個數(shù)字,如“987650056789”,要將各位數(shù)字按從小到大順序排列,即得到“005566778899”,通常可以用數(shù)組公式或自定義函數(shù):
如果單元格內的數(shù)字不超過15為,可使用下面的數(shù)組公式將數(shù)字按從小到大的順序排列,在B1單元格中輸入:
=TEXT(SUM(SMALL(–MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),REPT("0",LEN(A1)))
注意需按Ctrl+Shift+Enter結束輸入。如果要將數(shù)字按從大到小的順序排列,可將“SMALL”改為“LARGE”函數(shù)。受數(shù)字精度的限制,如果單元格內的數(shù)字超過15位,可能得不到正確的結果。而使用自定義函數(shù)則可用于較長的文本形式的數(shù)字。
按Alt+F11,打開VBA編輯器,單擊菜單“插入→模塊”,在代碼窗口粘貼下列代碼:
Function SortNumsInCell(num As String, Optional order As Boolean) As String
Dim Str As String
For i = 0 To 9
For j = 1 To UBound(Split(num, i))
Str = IIf(order, i & Str, Str & i)
Next
Next
SortNumsInCell = Str
End Function
上述代碼定義了一個自定義函數(shù),它有兩個參數(shù),第一個為單元格內的數(shù)字或直接輸入的數(shù)字,第二個參數(shù)為“0”或省略時指定按從小到大的順序排列,為“1”時則相反。關閉VBA編輯器,返回Excel界面,在B1中輸入公式:
=sortnumsincell(A1)
即可得到按從小到大排列的數(shù)字。如果輸入:
=sortnumsincell(A1,1)
則返回從大到小順序排列的數(shù)字。