有沒有辦法對單元格內的數字進行排序?

有沒有辦法對單元格內的數字進行排序?

我想知道是否有 Excel 函數或公式可用於對單元格內的數字進行排序。

例如,如果 A1 的值為,6193254807且 B1 的公式的參數設定為升序排序,則 B1 應等於0123456789(包括前導零)。當然,如果參數設定為降序排序,則 B1 應該等於9876543210

有沒有一種方法可以做到這一點,而無需陷入 VBScript、巨集或類似的異國情調?

答案1

這可以透過數組公式實現。假設原來的數字是A1,輸入任一 ff。放入空白儲存格並使用Ctrl+ Shift+提交Enter

上升:

=REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))&
 SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
     LARGE(INT(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),
            ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))

降序:

=SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
     SMALL(INT(MID(SUBSTITUTE(A1,0,""),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,"")))),1)),
           ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))
 &REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))

例子:

在此輸入影像描述

每個公式取n單元格中最大或最小的數字,並根據其「排名」將其乘以 10 的冪(也稱為為其分配一個新的位值),然後將其相加以產生「重新排列」的數字。例如,如果我們的原始數字是,231第一個公式的一般計算步驟如下:

=sum(1*power(10,2), 2*power(10,1), 3*power(10,0))  
=sum(100,20,3)
=123

REPT()公式的部分負責處理任何前導零或尾隨零。

結果將是文字格式。我認為這將是一個好主意,因為您可以在單元格中輸入的數字數量有限制(我建議閱讀這個超級用戶問題)。

如果您想對結果進行一些計算,只需0+在公式開頭插入即可將結果轉換為數字。

相關內容