我們昨天學(xué)了2個(gè)文本連接函數(shù),今天來(lái)學(xué)一個(gè)功能更強(qiáng)大的文本連接函數(shù)——textjoin。此函數(shù)也是新增函數(shù),要office2016版以上才可能有這個(gè)函數(shù),它的功能是使用分隔符連接文本字符串區(qū)域。
-01-
函數(shù)說(shuō)明
TEXTJOIN函數(shù)將多個(gè)區(qū)域和/或字符串的文本組合起來(lái),并包括你在要組合的各文本值之間指定的分隔符。它的語(yǔ)法結(jié)構(gòu)如下。
TEXTJOIN(分隔符, ignore_empty, text1, [text2], …)
分隔符 必須 文本字符串 (空) 或一個(gè)或多個(gè)用雙引號(hào)括起來(lái)的字符, 或?qū)τ行谋咀址囊谩?/span>如果提供了一個(gè)數(shù)字, 它將被視為文本。
ignore_empty 必須 忽略空值的意思。如果為TRUE[默認(rèn)],則忽略空白單元格。如果為FALSE,則不忽略空白單元格。
text1 必須 要連接的文本項(xiàng)。可以是文本字符串或字符串?dāng)?shù)組, 例如單元格區(qū)域。
text2 可選 要連接的其他文本項(xiàng)。文本項(xiàng)目最多可以包含252個(gè)文本參數(shù), 包括text1。每個(gè)都可以是文本字符串或字符串?dāng)?shù)組, 例如單元格區(qū)域。
如果結(jié)果字符串超過(guò)32767個(gè)字符 (單元格限制), TEXTJOIN 將返回 #VALUE!。
-02-
示例解釋
在C1單元格中輸入公式=TEXTJOIN(",",TRUE,A1:A4),結(jié)果如下。第1參數(shù)為逗號(hào)",",也就是分隔符是逗號(hào);第2參數(shù)為TRUE,也就是忽略空值;第3參數(shù)為A1:A4,也就是要連接的文本是一個(gè)單元格區(qū)域。它不僅把單元格區(qū)域的每個(gè)字符串連接起來(lái),而且用分隔符將每個(gè)字符串隔開(kāi),而且如果單元格區(qū)域有空單元格它也會(huì)忽略。
在C1單元格中輸入公式=TEXTJOIN(",",FALSE,A1:A4),結(jié)果如下。此時(shí)不忽略空值,可以看到在"愛(ài)"和"你"中間有2個(gè)逗號(hào)","。說(shuō)明不忽略空值時(shí),空值也要用分隔符隔開(kāi),也就是空值上要顯示出分隔符。
其實(shí)公式還可以簡(jiǎn)寫(xiě),如下圖所示。第2參數(shù)不寫(xiě),但用逗號(hào)把它的位置留出來(lái),相當(dāng)于TRUE。你可以看它的結(jié)果,已經(jīng)把空值忽略了。
第1,第2參數(shù)都可以不寫(xiě),但要用逗號(hào)留出它們的位置,如下圖所示。第1參數(shù)不寫(xiě),就相當(dāng)于分隔符為空"",或者可以看作沒(méi)有分隔符;第2參數(shù)不寫(xiě)相當(dāng)于TRUE。
在C1單元格輸入如下公式,第3參數(shù)是單元格區(qū)域,第4參數(shù)為數(shù)組。但結(jié)果還是1個(gè)值,而不是數(shù)組。有點(diǎn)像concat。而且連接的方式是第1個(gè)參數(shù)的每個(gè)元素依次連接,再連接第2個(gè)參數(shù)的每個(gè)元素,...直到連接完最后一個(gè)參數(shù)的每個(gè)元素。
在C1單元格中輸入如下公式,結(jié)果如下。此時(shí)第1參數(shù)也是一個(gè)數(shù)組,但是它的結(jié)果還是1個(gè)值,而不是一個(gè)數(shù)組。說(shuō)明第1參數(shù)是數(shù)組時(shí),也會(huì)像第3,第4參數(shù)...那樣一一連接起來(lái),直到連接完。只不過(guò)連接方式是循壞連接。如下圖所示"+","-"一直在循環(huán)。
當(dāng)?shù)?參數(shù)也是數(shù)組時(shí),情況就有點(diǎn)不同了。選中公式按F9可以看到,它是一個(gè)數(shù)組,有2個(gè)元素,如下第2圖,而且2個(gè)元素的值也不同,一個(gè)忽略空值,一個(gè)不忽略空值。說(shuō)明只有當(dāng)?shù)?參數(shù)是數(shù)組時(shí),才會(huì)形成數(shù)組。
你可能會(huì)問(wèn)寫(xiě)這么多“沒(méi)用的”有什么用呢?其實(shí)是有用的,寫(xiě)這么多示例情況,就是為了搞清楚這個(gè)函數(shù)的運(yùn)行原理,以防我們?cè)诠ぷ髦胁瓤印?br>
-03-
具體應(yīng)用
1.提取數(shù)字并用分隔符隔開(kāi)
昨天文章的最后留了個(gè)思考題,不僅將數(shù)字提取出來(lái),而且要在數(shù)字之間連接分隔符。用今天的textjoin函數(shù)來(lái)完成就比較簡(jiǎn)單,在B8單元格中輸入公式=TEXTJOIN("-",,TEXT(MID(A8,ROW($1:$20),1),"0;;0;")),按ctrl+shift+enter三鍵,向下填充。
思路還是一樣的,先用mid函數(shù)將單元格中的每個(gè)字符提取出來(lái);然后用text函數(shù)將數(shù)字顯示出來(lái),將文本顯示為空;最后用textjoin函數(shù)將其連接起來(lái),可以添加分隔符,重要的是可以忽略空值。
用concat函數(shù)也能完成,不過(guò)步驟要多一些。在C8單元格中輸入公式=SUBSTITUTE(TRIM(CONCAT(TEXT(MID(A8,ROW($1:$20),1),"0;;0;")&" "))," ","-"),按ctrl+shift+enter三鍵,向下填充。
TEXT(MID(A8,ROW($1:$20),1),"0;;0;")這部分都是一樣的,將每個(gè)字符提取出來(lái),數(shù)字顯示為數(shù)字,文本顯示為空。然后在其后面連接個(gè)空格" ",再用concat連接起來(lái),就是下圖1的效果。在編輯欄中選中公式按F9查看結(jié)果,如下圖2的結(jié)果,發(fā)現(xiàn)有很多空格。
所以用trim函數(shù)將多余的空格去掉,就是下圖的結(jié)果;最后用substitute將空格替換為短線,就是我們要的結(jié)果。
2.將相同部門的員工合并
將左表變成右表的形式,也就是將相同部門的員工合并在一個(gè)單元格中。在E14單元格中輸入公式=TEXTJOIN("、",,IF(A$14:A$22=D14,B$14:B$22,"")),按ctrl+shift+enter三鍵,向下填充。
textjoin的第1參數(shù)是頓號(hào),第2參數(shù)不寫(xiě)用逗號(hào)留出位置就是忽略空值,關(guān)鍵的就是第3參數(shù),第3參數(shù)是個(gè)if函數(shù)。
IF(A$14:A$22=D14,B$14:B$22,"")意思是如果A列的值等于“技術(shù)部”,那么就返回B列中對(duì)應(yīng)的員工名字,否則就返回空"",這樣就形成一個(gè)數(shù)組。用textjoin連接起來(lái)就完成了。
3.將銀行卡號(hào)分段顯示
如下圖所示要將銀行卡號(hào)每隔4位添加一個(gè)空格,實(shí)現(xiàn)分段顯示,這樣看起來(lái)比較好看。之前用text函數(shù)結(jié)合left和right來(lái)完成,今天用textjoin和concat來(lái)分別完成。在B36單元格中輸入公式=TEXTJOIN(" ",,MID(A36,ROW($1:$9)*4-3,4)),按ctrl+shift+enter三鍵,向下填充。
思路是這樣的,用mid函數(shù)從第1位提取4位,就是6217;從第5位提取4位,就是0071,···以此類推,提取完成。再用textjoin將其連接起來(lái),用空格隔開(kāi)。
ROW($1:$9)*4-3這部分就是構(gòu)建一個(gè)以1開(kāi)始,步長(zhǎng)為4的等差數(shù)列。也就是1,5,9,13,17,21···。其實(shí)這里到17就可以了,因?yàn)殂y行卡號(hào)一共是19位。
用concat來(lái)完成,在C36單元格中輸入公式=TRIM(CONCAT(MID(A36,ROW($1:$9)*4-3,4)&" ")),按ctrl+shift+enter三鍵,向下填充。
MID(A36,ROW($1:$9)*4-3,4)這部分和上面一樣,得到這樣一個(gè)數(shù)組{"6217";"0071";"4001";"3073";"428";"";"";"";""}。后面連接個(gè)空格,得到這樣一個(gè)數(shù)組{"6217 ";"0071 ";"4001 ";"3073 ";"428 ";" ";" ";" ";" "},然后用concat連接起來(lái)就是"6217 0071 4001 3073 428 ",尾部有多余的空格,用trim去掉多余的空格。
如果對(duì)你有所幫助或啟發(fā),請(qǐng)打賞或分享一下,你的支持就是我最大的動(dòng)力!此公眾號(hào)沒(méi)有留言功能,如果有問(wèn)題可以發(fā)到郵箱715704566@qq.com,有時(shí)間會(huì)回復(fù)的。
聯(lián)系客服