SortBy是多条件排序函数,TextSplit是字符串拆分函数(注:这两个都是新函数,office最新版本和WPS可用。)。看上去是两个八杆子够不着的函数,它们俩有什么关系?而这又和Ctrl E(快速填充快捷键)有什么关系?
这要从汪站长昨天看到的一个Excel问题说起:
【问题】如下图所示,A列是姓名、联系电话和地址组合在一起的字符串,要求把它们分成三列,如右侧表格所示。
每次汪站长分享字符串拆分公式,总有一大批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)))
Ps:通过这个问题,汪站长建议同学们一定要耐下心多学学函数公式,有些捷径不是万能的,多学些公式才能让你的Excel水平有质的提高。


|
|
打开微信扫一扫,Office自学网
专注分享软件安装和视频教程,让你一号在手,办公无忧!