我想知道是否有一个 Excel 函数或公式可用于对单元格内的数字进行排序。
例如,如果 A1 的值为6193254807
,并且 B1 的公式中参数设置为按升序排序,则 B1 应该等于0123456789
(包括前导零)。当然,如果参数设置为按降序排序,则 B1 应该等于9876543210
。
有没有办法做到这一点,而不必陷入 VBScript、宏或类似的奇特东西?
答案1
这可以通过数组公式实现。假设原始数字为A1,在空白单元格中输入任意 ff. 并使用++Ctrl提交:ShiftEnter
上升:
=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+
在公式开头插入即可将结果转换为数字。