用数组公式和自定义函数对单元格内的数字排序
导读:假如Excel工作表的A1单元格中包含某个数字,如987650056789,要将各位数字按从小到大顺序排列,即得到005566778899,通常可以用数组公式或自定义函数: 如果单元格内的数字不超过15为,可使用下面的数组公式将数字按从小到大的顺序排列,在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)))))
假如Excel工作表的A1单元格中包含某个数字,如“987650056789”,要将各位数字按从小到大顺序排列,即得到“005566778899”,通常可以用数组公式或自定义函数:
如果单元格内的数字不超过15为,可使用下面的数组公式将数字按从小到大的顺序排列,在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结束输入。如果要将数字按从大到小的顺序排列,可将“SMALL”改为“LARGE”函数。受数字精度的限制,如果单元格内的数字超过15位,可能得不到正确的结果。而使用自定义函数则可用于较长的文本形式的数字。
按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
上述代码定义了一个自定义函数,它有两个参数,第一个为单元格内的数字或直接输入的数字,第二个参数为“0”或省略时指定按从小到大的顺序排列,为“1”时则相反。关闭VBA编辑器,返回Excel界面,在B1中输入公式:
=sortnumsincell(A1)
即可得到按从小到大排列的数字。如果输入:
=sortnumsincell(A1,1)
则返回从大到小顺序排列的数字。
- 上一篇: 修改Word中超链接的打开方式
- 下一篇: 在Word中快速打开“页面设置”对话框

- 公司党费专户账务处理 2025-12-18
- 劳务分包合同可以含辅材 2025-12-18
- 公司法人的话费能报销吗 2025-12-18
- 违约后履约保证金的账务处理 2026-02-15
- 企业收到待报解预算收入是什么意思 2025-12-18
- 以前年度管理费用金额有误应如何调账 2025-12-19
- 购进货物用于赠送视同销售吗? 2026-01-01
- 负数发票能抵扣吗 2025-12-28
- 固定资产二级科目有哪些 2025-12-19
- 年终奖该如何并入综合所得申报 2026-03-21
- 我公司为装修公司 材料员在财务拿现金买材料 怎么做帐 2026-04-02
- 高温费发现金,没有入工资,没有发票怎么入账啊、 2025-12-21
- 老师好,小规模公司能一次性开票1000万吗?如果开了有什么税务风险呢 2026-03-21
- 老师 请问 住宿费分2个日期开的发票 可以做在同一张凭证吗? 2026-03-21
- 私立幼儿园装修费税务上要求不低于几年摊销 2026-03-24
- 请问下网上工商注册-设立登记提交签名时不记得数字证书口令怎么处理? 2026-03-26
- 老师,海带片的税率是多少 2025-12-20
- 老师,发票上传成功之后3天电脑系统还看不到信息,为什么呢 2026-02-21
- 请问老师,公司实收资本为0,可以用未分配利润转为实收资本吗 2026-02-21
- 月末结转汇兑损益,是按哪个时间点汇率来? 2025-12-22