Excel 整列的单元格都有文字和数字混合,如何按数字升序排序?
请在微信客户端打开
公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必“设为星标”哦!!!
点击任意文章上方的“☆星标”即可。

解答网友提问:单元格内容由文本+数字组成,如何在不改变数据表的前提下,按数字排序?
这种需求一听就是哪个领导天马行空的要求,没关系,当好打工人,领导要啥就是啥。
案例:
将下图 1 中的 A 列根据单元格中的数字升序排序,效果如下图 2 所示。


解决方案 1:
1. 在 B2 单元格中输入以下公式 –> 回车:
=SORTBY(A2:A21,–RIGHT(A2:A21,LEN(A2:A21)-(LENB(A2:A21)-LEN(A2:A21))))


如果这个公式让大家理解困难,那我先拆解并简化一下,你们就知道在说啥了。
在 C2 单元格中输入以下公式 –> 下拉复制公式:
=RIGHT(A2,LEN(A2)-(LENB(A2)-LEN(A2)))
公式释义:
-
LENB(A2)-LEN(A2):将 A2 单元格的字节数减去字符数,就得到文本数;因为文本占 2 个字节;
-
LEN(A2)-…:用总字符数减去文本数,就是数字个数;
-
RIGHT(A2,…):从 A2 单元格中从右向左提取出数字个数,即提取所有数字



那现在再回过头看 B 列的公式:
-
将 RIGHT 函数中的 A2 单元格全都变成了 B 列的内容区域,形成数组;
-
–RIGHT(…):– 的目的是将提取出来的文本数字转换为数值格式,这样才能排序;
-
SORTBY(A2:A21,…):将 A2:A21 根据第二个参数中的数值升序排序
解决方案 2:
如果没有 365 函数,那么还是用 PQ 最省事。
1. 选中数据表的任意单元格 –> 选择任务栏的“数据”–>“来自表格/区域”

2. 在弹出的对话框中保留默认设置 –> 点击“确定”

表格已经上传至 Power Query。
3. 选中列 –> 右键单击 –> 在弹出的菜单中选择“重复列”


4. 选中第二列 –> 选择任务栏的“主页”–>“拆分列”–>“按照从非数字到数字的转换”


5. 将最后一列的格式修改为整数。


6. 将最后一列按升序排序。


7. 删除最后两列。


8. 选择工具栏的“主页”–>“关闭并上载”–>“关闭并上载至”

9. 在弹出的对话框中选择“表”–> 选择“现有工作表”及所需上传至的位置 –> 点击“确定”

右侧绿色的表格就是排序结果。

夜雨聆风