小明的新同事昨天發來的一個客服資訊表,氣的小明想辭職!
這是一個只有一列的員工資訊表(如下圖A列),內容極其混亂。要求提取出收貨人、手機號和地址(如下圖BCD列)
有的沒聯系人
有的號碼前沒有手機,有的是手機,有的是手機號
有的分隔符是分號,有的是逗號
收貨人、手機號和地址的前後順序也不一致。
可以有不少同學想試試Ctrl + E,蘭色就替你們試一下最簡單的手機號:
放棄幻想,小明只能想法寫公式,結果還真寫出來一個萬能提取公式。
=LET(X,TEXTSPLIT(IF(COUNTIF(A3,"*收貨人*")=0,"收貨人: "&A3,A3),{",","收貨人","地址",":","手機","手機號"},,1),SORTBY(X,LEN(X),1))
是不是被長長的公式嚇到了?嘿嘿,別怕,等蘭色把整個公式思路解析後就會明白原理,相們對於新手來說肯定會有很多收獲的。
思路解析:
自從textsplit函式問世,拆分字元變得無比簡單。本例也不例外,也要用到它。但問題是有的資訊少了收獲人,所以需要補齊(如果缺其他項,同樣方法)
=IF(COUNTIF(A3,"*收貨人*")=0,"收貨人: "&A3,A3)
註:收獲人後 四 個空格(一般人名最多4個字)
接下來就可以用textsplit函式拆分了
=TEXTSPLIT(IF(COUNTIF(A3,"*收貨人*")=0,"收貨人: "&A3,A3), {",","收貨人","地址",":","手機","手機號"} ,,1)
註:大號括{ }內是所有可能的拆分符。
新問題來了,拆分出來的是亂序的。這時該sortby出場了,利用收貨人、手機號和地址的字串長度進行排序。最終公式為:
=LET( X ,TEXTSPLIT(IF(COUNTIF(A3,"*收貨人*")=0,"收貨人: "&A3,A3),{",","收貨人","地址",":","手機","手機號"},,1), SORTBY( X ,LEN( X ),1) )
註:因為sortby要兩次使用拆分後的內容,為了簡化公式,用定義名稱(x)的函式
LET
蘭色說
:雖然蘭色進行了說明,估計不是有很多同學看不太懂公式的含義,原因是大家對新函式沒見過或不熟悉。上周六介紹了
let、Lambda
等4個新函式用法(
教程也同步更新到了蘭色的函式大全大教程中
),本周日上午蘭色將大家繼續學習新函式的用法,想學的點下面預約
如果你沒時間看直播或想看視訊講解,可以購買蘭色的四合一大全教程。 包括 Excel表格92個函式用法(更新至148集) 、 119個使用技巧 、 透視表從入門到精通50集 、 圖表從入門到精通185集 ,。詳情點選下方連結: