Excel 整列的单元格都有文字和数字混合,如何按数字升序排序?

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 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. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上传至的位置 --> 点击“确定”


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

原文链接:,转发请注明来源!