利用Excel函數(shù)解決文本處理問(wèn)題,是最常見(jiàn)不過(guò)的任務(wù)啦~
比如下面這些,你有沒(méi)有遇到過(guò)?
合并兩個(gè)單元格的內(nèi)容?
把省市區(qū)分拆?
提取身份證號(hào)碼中的出生日期?
批量替換數(shù)據(jù)的單位?
在我眼里,每個(gè)文本函數(shù)都是一個(gè)詩(shī)人……接下來(lái)就帶你領(lǐng)略,各種文本函數(shù)的風(fēng)騷之處。
一共分為六個(gè)部分,文本合并、文字提取、字符清洗、文字替換、精確查找、長(zhǎng)度計(jì)算。
總有你要用上的!
文本合并
合并和提取是文本處理中最最常見(jiàn)的任務(wù)。
例如,將下表中各個(gè)單元格的文字合成1個(gè)新的句子:
而利用不同的函數(shù)公式,操作方法和結(jié)果都有所不同。
&連字符&能夠直接將一個(gè)一個(gè)的文本連接起來(lái),形成一個(gè)新的文本:
公式:=A1&B1&C1
結(jié)果:愛(ài)老虎油
然而,&連字符先天殘疾,有很多個(gè)字符時(shí),也不能直接引用整片區(qū)域進(jìn)行合并,依然只能一個(gè)個(gè)手工添加。操作過(guò)程如下:
Phonetic 函數(shù)用Phonetic就省事很多,它可以引用一個(gè)區(qū)域(只能一個(gè)),將區(qū)域內(nèi)所有單元格的文本型數(shù)據(jù)拼合在一起。
例如將下表中的全部文本拼合起來(lái):
可以使用如下公式
公式:=phonetic(A1:D1)
結(jié)果:愛(ài)老虎油
但是明明D1里有一個(gè)數(shù)字1314,為什么沒(méi)出現(xiàn)在結(jié)果里呢?
因?yàn)?,phonetic只是個(gè)兼職合并函數(shù)而已。它本職工作是提取日文拼音,是日文版來(lái)客串一下的,人家只是恰好可以合并文字而已。
這個(gè)客串函數(shù)個(gè)性非常獨(dú)特,因?yàn)樗劾镏挥形谋拘蛿?shù)據(jù),對(duì)公式結(jié)果、數(shù)值、日期時(shí)間等等通通視而不見(jiàn)。所以1314就是被狗吃掉了……
此公式的輸入就比&連字符簡(jiǎn)單多了:
Concat 函數(shù)
而Concat就比&和phonetic更加完美,因?yàn)樗饶芤靡粋€(gè)區(qū)域直接合并,又不會(huì)漏掉數(shù)值、日期和公式結(jié)果,還能引用多個(gè)區(qū)域,簡(jiǎn)直不能更完美了。
公式:=concat(A1:D1)
結(jié)果:愛(ài)老虎油1314
不過(guò),很遺憾,完美版本的Concat只有2016版才有。
在之前的版本中,它有個(gè)前身,叫 Concatenate。Concatenate和&公式一個(gè)德性,只能逐個(gè)添加。名稱又太長(zhǎng),還不如用&來(lái)得方便。估計(jì)是Office工程師自己都忍不了了,才在2016版添加了一個(gè)加強(qiáng)版吧。
這個(gè)加強(qiáng)版可棒了:
以上三種合并函數(shù),分別合成的結(jié)果放在一起,結(jié)果就是醬紫的:
一個(gè)宅男表哥用公式向喜歡的妹子發(fā)出三行愛(ài)的告白。
結(jié)果,這個(gè)妹子是個(gè)表妹,迅速用下面這個(gè)函數(shù)做出了回應(yīng)……
Textjoin 函數(shù)
用分隔符將多個(gè)字符串聯(lián)起來(lái)。
公式:textjoin(“!”,True,A1:D1)&”!”
結(jié)果:你!是!個(gè)!好人!
于是,此公式的含義為,將A1:D1中每個(gè)單元格的內(nèi)容用嘆號(hào)串聯(lián)起來(lái),如果有空格則忽略,最后缺少的嘆號(hào)用&單獨(dú)補(bǔ)一個(gè)。
因?yàn)橛泻瘮?shù)輔助輸入工具條,寫(xiě)這個(gè)公式也不難:
有一個(gè)神奇的函數(shù),可以按照指定的次數(shù),將自己反復(fù)拼合起來(lái),俗稱自擼。啊,不,是重復(fù)。
Rept 函數(shù)
它的語(yǔ)法是Rept(字符串,重復(fù)次數(shù))。好想讓妹子用Rept再來(lái)一次暴擊:
公式:rept(A1,3)
結(jié)果:你是個(gè)好人!你是個(gè)好人!你是個(gè)好人!
公式含義再明顯不過(guò)了。
好喜歡Rept函數(shù)輸入后按下Enter鍵的感覺(jué):
文字提取
提取型文本函數(shù),就是從1個(gè)文本中挑出一部分。常用的提取函數(shù)就有Left、Right、Mid(middle的簡(jiǎn)寫(xiě))三種。
Left 函數(shù)
從左邊開(kāi)始算起,提取若干字符。例如從下面詩(shī)句提取左邊的7個(gè)字符:
公式:=Left(A1,7)
結(jié)果:一江春水向東流
Right 函數(shù)而提取右邊的7個(gè)字符,就要用函數(shù)Right:
公式:=Right(A1,7)
結(jié)果:我也沒(méi)有女盆友
Left 和 Right 函數(shù)語(yǔ)法結(jié)構(gòu)相同:函數(shù)名(字符串,提取數(shù)量)。只是一左一右,提取的方向不一樣。
但是第三個(gè)函數(shù)Mid就厲害得多,它能夠從中間指定的位置開(kāi)始提取。
Mid 函數(shù)基本語(yǔ)法是 Mid(字符串,起始位置,提取數(shù)量)
例如,從下面詩(shī)句中提取清淚兩字,就可以從第11個(gè)字符開(kāi)始提取2個(gè)字符(逗號(hào)也算一個(gè))。
公式:=Mid(A3,11,2)&Right(A3,1)
結(jié)果:清淚流
注意到了嘛,上面的公式還用到了連字符&,將兩個(gè)公式計(jì)算的結(jié)果拼在一起,得到了最終結(jié)果。
字符清洗
從網(wǎng)頁(yè)上或神隊(duì)友那弄來(lái)的數(shù)據(jù),可能會(huì)有莫名其妙的空格和換行符。這些字符雖然看不見(jiàn),但卻會(huì)導(dǎo)致公式計(jì)算結(jié)果出錯(cuò)。所以通常會(huì)用Clean或Trim兩個(gè)函數(shù)進(jìn)行清洗。
他們語(yǔ)法也一樣,都是 函數(shù)名(字符串)。但功能上卻有細(xì)微的差別:
Clean 函數(shù)
字面意思是清潔,它只清除換行符等看不見(jiàn)的非打印字符,卻無(wú)法去除空格。
Trim 函數(shù)
字面意思是修剪,它會(huì)裁頭去尾,將前后的空格以及文本內(nèi)部多余的空格全部清除,但是按英文使用習(xí)慣,英文中間會(huì)自動(dòng)保留一個(gè)空格字符作間隔。
例如,A1單元格中的字符串有很多多余的空格及2個(gè)換行符。
分別用Clean和Trim函數(shù)處理的結(jié)果如下:
文字替換
Replace和Substitue這哥倆的能力是”置換“。功能類(lèi)似,但是定位的方法不同。
Substitute 函數(shù)
Substitute是以字符定位字符。
例如,找出詩(shī)句中的“船”字,然后替換成“床”,公式和結(jié)果如下:
公式:=Substitute(A1,”船”,”床”)
結(jié)果:百年修得同床度,霉霉三月又分手
Replace 函數(shù)
而Replace則是以位置定位字符。
例如,從第13個(gè)字符開(kāi)始提取1個(gè)字符“漢“,然后把”漢“替換成新的字符“妹“,公式和結(jié)果如下:
公式:=Replace(A1,13,1,”妹”)
結(jié)果:此情可待成追憶,我要做撩妹高手
感覺(jué)自己是在冒著跪榴蓮的風(fēng)險(xiǎn)在寫(xiě)這篇推送……
替換函數(shù)還有一項(xiàng)獨(dú)門(mén)秘技:把替換為的字符寫(xiě)成空值(“”),替換就變成了刪除??茨膫€(gè)字符不順眼,一言不合就可以讓它消失。
精確查找
Find和Search,都能掘地三尺,精準(zhǔn)定位某個(gè)字符在文本中的具體位置。
Find 函數(shù)
公式:=Find('King',A1)
結(jié)果:2
計(jì)算結(jié)果說(shuō)明King在整句中是從第2個(gè)字符開(kāi)始出現(xiàn)的。
Search 函數(shù)
公式:=Search('洪荒',A1)
結(jié)果:6
結(jié)果表明,“洪荒”在整句中是從第6個(gè)字符開(kāi)始的。
雖然 Find 和 Search 都是返回某個(gè)字符在字符串中的位置信息,結(jié)果都是一個(gè)數(shù)值。但還是有細(xì)微差別,Search 可以用通配符模糊查找。例如,“K?ng”就能把 King、Kong、Kang 都找出來(lái),而Find卻做不到。
但是,計(jì)算返回結(jié)果是一個(gè)位置數(shù)值,有用嗎?
接著往下看,你就知道可以怎么用!
她是怎么知道的?
長(zhǎng)度計(jì)算
Excel中有兩把度量文本長(zhǎng)度的尺子:Len 函數(shù) 和 LenB 函數(shù)
Len 函數(shù)
不管中文還是英文、數(shù)字,Len都將每個(gè)字符算作1。
公式:=Len(A1)
結(jié)果:15
兩句七律加一個(gè)符號(hào),總共15個(gè)字符。
LenB 函數(shù)
LenB后面多出來(lái)的那個(gè)B是Byte(字節(jié)) 的意思,是按字節(jié)來(lái)算。1個(gè)漢字及中文標(biāo)點(diǎn)都是雙字節(jié),長(zhǎng)度都是2。但英文字母和數(shù)字通常都是1個(gè)字節(jié),長(zhǎng)度只有1。
于是,同樣是14個(gè)漢字和一個(gè)標(biāo)點(diǎn)的詩(shī)句,用LenB的計(jì)算結(jié)果不一樣。
公式:=LenB(A1)
結(jié)果:30
LenB 和 Len之間的差異,
常常用來(lái)處理中英文混合的情況,比如
公式:=LenB(“King是好人”)-Len(“King是好人”)
結(jié)果:3
由于漢字LenB計(jì)算出來(lái)的長(zhǎng)度是Len的兩倍,但英文字母長(zhǎng)度相等,兩個(gè)公式之差,就是漢字的個(gè)數(shù)。
以上結(jié)果正說(shuō)明字符串中有3個(gè)漢字。如果再配合Right函數(shù),就可以把中文單獨(dú)提取出來(lái)。
Text 格式轉(zhuǎn)換函數(shù)
text函數(shù)能夠讓單元格數(shù)值按照指定的格式顯示出來(lái),例如固定顯示成4位數(shù),不足就補(bǔ)0的處理方法如下:
公式:=TEXT(A1,'0000')
結(jié)果:0069
以上就是常用的文本函數(shù)用法,然而很多人可能會(huì)有這樣的疑問(wèn)。
“合并和提取用在哪很好理解,可是查找一個(gè)字符并返回位置信息,到底有什么用?”
有些函數(shù)計(jì)算結(jié)果自身并沒(méi)有多大意義,卻能夠輔助完成其他任務(wù)。比如Len先求出長(zhǎng)度后,就可以按照長(zhǎng)度來(lái)排個(gè)名次……
更厲害的是,計(jì)算結(jié)果還可以作為其他函數(shù)的參數(shù)啊。比如要把下圖中每一個(gè)數(shù)字提取出來(lái)變成 QiuYeXXXX的格式,只用一個(gè)函數(shù),是辦不到的。
但是多個(gè)函數(shù)組合起來(lái)使用,上萬(wàn)行的數(shù)據(jù)也能雙擊搞定,只需要花幾秒鐘時(shí)間寫(xiě)一個(gè)公式就夠了:
圖中演示的公式就綜合運(yùn)用了4種文本函數(shù),逐步求值的結(jié)果如下圖:
文本函數(shù)遠(yuǎn)不止這些,但常用的就是下面這16個(gè)啦!其他函數(shù),需要用時(shí)再找吧~
我真的不會(huì)去背這些函數(shù),但是會(huì)根據(jù)他們能解決的問(wèn)題進(jìn)行觀察和梳理,留意他們的特點(diǎn)。然后在看到其他案例時(shí),自己再去了解一番同時(shí)加深理解。
函數(shù)看起來(lái)枯燥乏味,但只要摸清脈絡(luò),就會(huì)變得很好玩。
想當(dāng)初愛(ài)上Excel,也就是純粹覺(jué)得好玩。而文本函數(shù)中最喜歡的,就是Rept了。
因?yàn)?/span>
它可以完美表達(dá)心情:
Rept(“你是個(gè)好人!”,6)
Rept('??',9)
作者丨King編輯丨阿機(jī)