有没有办法对单元格内的数字进行排序?

有没有办法对单元格内的数字进行排序?

我想知道是否有一个 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+在公式开头插入即可将结果转换为数字。

相关内容