如有高阶函数,对Excel文本数字排序就会变得非常简单

Excel学习世界 2023-01-31 22:06:39

之前给大家详细讲解了如何通过公式对文本数字排序,其实类似的公式有很多。今天要教几个用到 O365 函数的公式,不得不说,高阶函数确实能简化人类的工作。

案例:

将下图 1 中的部门按升序排序,效果如下图 2 所示。

解决方案 1:

1. 在 B2 单元格中输入以下公式:

=SORTBY(A2:A10,FIND(MID(A2:A10,3,1),"一二三"))

公式释义:

MID(A2:A10,3,1):将 A2:A10 区域中每个单元格的第 3 位提取出来,会生成一组由文本数字组成的数组;

FIND(...,"一二三"):依次查找上述数组是否含有文本“一二三”中的任意字符,如果有,则返回该字符在文本字符串中的位置,是一个数值;

SORTBY 函数的语法如下:

SORTBY(要排序的区域,用于设置排序规则的区域,[升序还是降序]);

可选参数为 1 或默认值时,表示升序;-1 表示降序;

本公式的意思是,对 find 查找出的这组数值按升序排序,然后以这个规则将部门重新排序;简单来说就是将中文数字提取出来,通过 find 函数转换成了对应的数值,然后再对数值升序排序

解决方案 2:

1. 在 B2 单元格中输入以下公式 --> 下拉复制公式:

=IFS(COUNT(FIND("一",A2)),1,COUNT(FIND("二",A2)),2,TRUE,3)

公式释义:

ifs 的作用本质上跟 if 是一样的,只是把语法简化了,不再需要层层嵌套;

COUNT(FIND("一",A2)),1:在 A2 单元格中查找“一”,找到返回所在的位置数,找不到返回错误值;用 count 函数计算结果是否为数值,即是否找到,找到的话,返回数值 1;

COUNT(FIND("二",A2)),2:公式同理,找到“二”就返回数值 2;

TRUE,3:如果都找不到,则返回 3

2. 选中 B 列的任意单元格 --> 选择菜单栏的“数据”-->“升序”

A 列就按部门顺序排序好了。

解决方案 3:

1. 也可以将 B 列的公式修改如下:

=SWITCH(MID(A2,3,1),"一",1,"二",2,"三",3)

公式释义:

switch 函数相当于将 ifs 函数再次简化了,语法为 SWITCH(要转换的值, 要匹配的值 1, 如存在匹配项 1 需返回的值, [要匹配的值 2], [如存在匹配项 2 需返回的值]...)

MID(A2,3,1):用 mid 函数提取出 A 列的文本数字;

一",1,"二",2,"三",3:当文本为“一”、“二”、“三”时,分别返回数值 1、2、3

2. 对 B 列进行升序排序,A 列也同步排序好了。

0 阅读:9

Excel学习世界

简介:Excel 学习交流