之前给大家详细讲解了如何通过公式对文本数字排序,其实类似的公式有很多。今天要教几个用到 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 列也同步排序好了。