当前位置: 欣欣网 > 办公

SortBy+TextSplit,让Ctrl E 迷崩溃的一个Excel绝妙公式

2024-03-28办公

SortBy是多条件排序函数,TextSplit是字符串拆分函数 (注:这两个都是新函数,office最新版本和WPS可用。) 。看上去是两个八杆子够不着的函数,它们俩有什么关系?而这又和 Ctrl E ( 快速填充快捷键 )有什么关系?

这要从兰色昨天看到的一个Excel问题说起:

【问题】如下图所示,A列是姓名、联系电话和地址组合在一起的字符串,要求把它们分成三列,如右侧表格所示。

兰色把数据贴出来,大家可以粘到表格中练习,贴心吧,嘿嘿。记得在文后帮兰色点赞和在看哦。

1339999999 张三 江苏省苏州市吴江市同里镇

扬州市大虹桥路28号;李四;32323290013

18760761715。江苏省常州市新北区汉江路1号,吴六

无锡市滨湖区灵山路;魏城天,3139000000

江苏省无锡市山水城旅游度假区,杨西过 1313154315

中国江苏苏州东北街178号。李兰燕 12121421424

张华;31415364243 苏州市新区金山路87号

43243263322。江苏省常州市溧阳天目湖镇,孟新

21431532555,湖南省芒果市金桥区 周处

张天晴,7886756433,山东省临沂市

每次兰色分享字符串拆分公式,总有一大批Ctrl E迷留言说为什么不用Ctrl E。开始兰色还会说Ctrl E不是万能的,多学拆分公式会有用的,后来留言太多就懒得解释了。这次兰色就试这个能不能用「万能」键解决。

结果是,不行,不行,还是不行!

为什么Ctrl E不行,原因是内容太杂乱,分隔符也不规则。嘿嘿,还是看看今天的主角表演吧。为了方便同学们理解,兰色就把公式拆分开来讲。

首先用Textsplilt把字符拆分成3列。

=TEXTSPLIT(A2,{" ",";","。",","})

兰色注 :拆分符可以用一组的哦,放在大括号内。

最关键的问题来了,如何能按姓名、手机号码、地址顺序排序呢?

Excel中有两个排序函数,SORT和 SORTBY ,这两个函数的区别是后者 可以让一个表格依据另外一组数排序 。所以这里可以选择Sortby,可排序依据什么数呢?

嘿嘿,这里一个冷门函数出现了,它就是 lenb 函数。我们可以用它来计算这3列的字节数,一般情况下姓名最少,手机号码次之,地址最多。

=LENB(TEXTSPLIT(A2,{" ",";","。",","}))

兰色注 :那为什么不用 len 而选择 lenb ? 这是因为可能地址的字符串会少于11位,用lenb可以让汉字的字节数翻一倍(汉字占2个字节,而数字是1),这样绝大部分情况下地址字节都会比手机号码多。

有了排序依据,就可以用 sortby(数组,排序依据) 排序了。

=SORTBY(TEXTSPLIT(A2,{" ",";","。",","}),LENB(TEXTSPLIT(A2,{" ",";","。",","})))

这里还可以用let函数简化公式。

=LET(x,TEXTSPLIT(A2,{" ",";","。",","}),SORTBY(x,LENB(x)))

兰色说 :通过这个问题,兰色建议同学们一定要耐下心多学学函数公式,有些捷径不是万能的,多学些公式才能让你的Excel水平有质的提高。

兰色根据多年经验,录制了一全套适合新手和初中级阶段用户学习的Excel教程。包括 Excel表格88个函数用法( 即将更新几十个新函数 )、119个使用技巧、透视表从入门到精通50集、图表从入门到精通186集 。( 绿卡会员 有效期内 免费 )详情点击下方链接