跳到主要內容跳到頁尾

拆字串與合字串:SPLIT、TEXTJOIN、JOIN、CONCATENATE 與 CONCAT

11 分鐘閱讀Lv.2 中級摘要與日期

整理一格拆多格的 SPLIT(split_by_each、remove_empty_text、數字和日期自動轉換)與多格合一格的 TEXTJOIN、JOIN、CONCATENATE、CONCAT,包含 ignore_empty、JOIN 只吃一維、CONCAT 只有兩個參數,以及和 & 運算子的差別。

發布 更新

文章目錄

A2 貼了一格 蘋果紅茶,青茶,烏龍茶,我想把它拆成三格;反過來,D 欄有一排名單,我想接成一句話放進通知裡。

拆開用 SPLIT,合起來有 TEXTJOIN、JOIN、CONCATENATE、CONCAT 四種,再加上大家最常用的 &。今天一次整理。日常多半只會用到 SPLIT、TEXTJOIN 跟 &,另外兩個比較像是看到別人的表格時要認得。

TEXT 怎麼把數字變文字,在 TEXT 函式入門 講過;清空格、清怪字元在 文字清理函式。這篇不重講。

怎麼選

  • 一格拆成多格:SPLIT。
  • 一排或一欄合成一格,想略過空白、想搭配 FILTER:TEXTJOIN。
  • 一維的範圍合成一格,不需要略過空白:JOIN。
  • 固定那幾格接起來(例如姓名和電話合在同一格):& 最短,CONCATENATE 一樣的事寫得比較長。
  • 只有兩個東西要接:CONCAT,但它在 Google 試算表只吃兩個參數,我幾乎不用。

接下來的合併範例用這張小表,A 到 C 欄是訂單,H 欄放兩個日期:

ABCH
1品項杯數備註日期
2蘋果紅茶37少冰2026/10/11
3青茶82026/11/03
4烏龍茶112去冰
5蘋果綠茶21
6檸檬紅茶5微糖

拆開

SPLIT

SPLIT 會用你指定的分隔符號,把一格文字拆開,結果往右邊的儲存格展開。

語法:

  • 文字:要拆的字串或儲存格。
  • 分隔符號:用什麼來切。
  • 逐字分割:選填,預設 TRUE。TRUE 代表分隔符號裡的每一個字元都各自是分隔符號,FALSE 才是把整串當成一個分隔符號。
  • 略過空白:選填,預設 TRUE。切出來的空字串會被丟掉。

Excel 365/2024 有對應的 TEXTSPLIT(Excel 2021 沒有),但預設值不同:ignore_empty 預設 FALSE,連續的分隔符號會留下空格;match_mode 預設區分大小寫;多個分隔符號要寫成陣列常數,例如 {",","、"};結果也不會自動轉成數字或日期,需要的話要自己包 VALUE。

先看最單純的,A2 是 蘋果紅茶,青茶,烏龍茶,用逗號拆:

Google 試算表公式
fx

用逗號把一格拆成三格

=SPLIT(A2, ",")

來看看結果,公式放在 B2,會往右展開到 D2:

BCD
2蘋果紅茶青茶烏龍茶

要拆成直的也可以,外面包 TRANSPOSE:

Google 試算表公式
fx

拆完轉成直的

=TRANSPOSE(SPLIT(A2, ","))

結果會是 B2 到 B4 三格,由上而下。

展開的位置如果已經有東西,SPLIT 不會硬蓋過去,而是回 #REF!,提示「系統未展開陣列結果,以免覆蓋 C2 中的資料。」(C2 換成被擋住的那一格)。如果 A2 是 a,b,c,B2 放 SPLIT,但 C2 本來就有字,B2 就會是 #REF!。

逐字分割

這是 SPLIT 最容易讓人愣住的地方。

我有一格 A2 是 Apple Tea, Milk Tea,想用「逗號加空格」切成兩杯飲料,直覺會寫:

Google 試算表公式
fx

用逗號加空格拆,沒有指定第三個參數

=SPLIT(A2, ", ")

你會得到四格而不是兩格:

BCDE
2AppleTeaMilkTea

原因是第三個參數預設 TRUE,", " 被當成兩個分隔符號,逗號切一次、空格也切一次,Apple Tea 中間的空格也被切開了。把第三個參數改成 FALSE,才會把 ", " 當成一整串:

Google 試算表公式
fx

把逗號加空格當成一整個分隔符號

=SPLIT(A2, ", ", FALSE)
BC
2Apple TeaMilk Tea

反過來,預設的逐字分割也有它的用處。像 A2 是 蘋果紅茶、青茶,烏龍茶,頓號跟逗號混著用,把兩個字元寫在一起就一次切乾淨:

Google 試算表公式
fx

頓號跟逗號都當分隔符號

=SPLIT(A2, "、,")
BCD
2蘋果紅茶青茶烏龍茶

這時如果加了 FALSE,SPLIT(A2, "、,", FALSE) 會找不到「頓號加逗號」這串連在一起的字,整格就原封不動,只有 B2 一格。

注意

分隔符號一旦超過一個字元,先想一下你要的是「每個字元都切」還是「整串才切」。要整串的話,第三個參數一定要寫 FALSE。

空白要不要留

第四個參數管的是空字串。A2 是 蘋果紅茶,,烏龍茶,中間少了一項:

Google 試算表公式
fx

預設會丟掉空白,後面的欄位會往前擠

=SPLIT(A2, ",")
BC
2蘋果紅茶烏龍茶

烏龍茶跑到第二格了。如果欄位位置有意義,例如第三欄一定是備註,就要保留空白:

Google 試算表公式
fx

保留空白,欄位位置不變

=SPLIT(A2, ",", TRUE, FALSE)
BCD
2蘋果紅茶烏龍茶

要保留空白時,第三個參數也得寫出來,因為它排在第四個前面,沒辦法跳過。

自動變成數字或日期

SPLIT 切出來的內容,如果長得像數字或日期,會被轉成數字或日期。這在貼進來的商品編號上特別會害人。

A2 是 001,0042,17:

Google 試算表公式
fx

拆編號

=SPLIT(A2, ",")

會得到:

BCD
214217

前面的 0 都不見了(0912 也一樣會變成 912),因為它們已經是數字 1、42、17。用 ISNUMBER 確認一下:

Google 試算表公式
fx

確認切出來的是不是數字

=ARRAYFORMULA(ISNUMBER(SPLIT(A2, ",")))

三格都是 TRUE。

日期也一樣。A2 是 2026/10/11;2026/11/03,用分號拆開:

Google 試算表公式
fx

確認切出來的是不是數字(日期在試算表裡就是數字)

=ARRAYFORMULA(ISNUMBER(SPLIT(A2, ";")))

兩格都是 TRUE,它們是日期序號,不再是文字。日期為什麼是數字,在 日期與時間入門 講過。

這個特性也能反過來用。要把 2026/10/11 拆成年、月、日三個數字:

Google 試算表公式
fx

拆日期字串成三個數字

=SPLIT("2026/10/11", "/")

公式放在 B2 的話,B2 到 D2 會是:

BCD
220261011

如果你要保留 001 這種前導 0,我的做法是在每一段前面先黏一個底線,讓它變成文字,切完再把底線拿掉:

Google 試算表公式
fx

每段前面加底線再切,最後用 MID 拿掉

=ARRAYFORMULA(MID(SPLIT("_"&SUBSTITUTE(A2, ",", ",_"), ","), 2, 20))

這條公式由內往外讀:SUBSTITUTE 把每個逗號換成「逗號加底線」,前面再補一個底線,所以每一段都以底線開頭;SPLIT 切完都是文字;MID 從第 2 個字元取起,把底線拿掉。結果:

BCD
2001004217

合併

TEXTJOIN

TEXTJOIN 用指定的分隔符號,把多個字串或整個範圍接成一格。

語法:

  • 分隔符號:接在每兩段中間的字串。
  • 略過空白:必填,TRUE 或 FALSE。TRUE 會跳過空白儲存格。
  • 文字1、文字2⋯⋯:可以是單格、範圍、其他函式的結果,想放幾個都行。

C 欄備註有三格有字、兩格空白,用頓號接起來:

Google 試算表公式
fx

略過空白,把備註接起來

=TEXTJOIN("、", TRUE, C2:C6)
公式顯示結果
少冰、去冰、微糖
少冰、、去冰、、微糖

第二列把 TRUE 改成 FALSE,空白格也算一段,所以中間出現連續的頓號。我幾乎都寫 TRUE,只有在要保留位置對應時才寫 FALSE。

它可以同時吃好幾個參數,範圍跟單格、文字都能混著放:

公式顯示結果
蘋果紅茶-青茶-其他

TEXTJOIN 最好用的地方,是可以搭配 FILTER。我想把杯數超過 20 的品項接成一句話:

Google 試算表公式
fx

篩選後再合併

=TEXTJOIN("、", TRUE, FILTER(A2:A6, B2:B6 > 20))

杯數 37、112、21 三筆符合,結果是:

公式顯示結果
蘋果紅茶、烏龍茶、蘋果綠茶

篩選條件如果沒有任何一筆符合,FILTER 回 #N/A,TEXTJOIN 也就跟著 #N/A。這邊包一層 IFERROR:

Google 試算表公式
fx

沒有符合的資料時顯示「無」

=IFERROR(TEXTJOIN("、", TRUE, FILTER(A2:A6, B2:B6 > 200)), "無")

杯數沒有超過 200 的,所以結果是「無」。FILTER 的細節在 FILTER 函式。

想要換行而不是頓號,分隔符號用 CHAR(10),儲存格再打開「自動換行」。三個品項接起來的字數是:

公式顯示結果
11

4 + 2 + 3 加兩個換行字元,剛好 11。

兩個要小心的地方。

第一,不能把 & 的日期轉換規則直接套到 TEXTJOIN。TEXTJOIN("|",TRUE,DATE(2026,10,16),0.1234) 與 JOIN 都得到 2026/10/16|0.1234,同一個日期用 & 串接則是 46311|0.1234。把同一日期放進來源儲存格,分別套用日期、自訂 yyyy-mm-dd、數字兩位小數格式:TEXTJOIN 與 JOIN 依次接成 2026/10/16、2026-10-16、46,311.00;& 三次都是 46311。可見來源顯示格式也會影響接字結果。要讓輸出固定為指定日期樣式,仍應先用 TEXT 明確轉換:

Google 試算表公式
fx

先把日期轉成指定樣子的文字再接

=TEXTJOIN("、", TRUE, ARRAYFORMULA(TEXT(H2:H3, "m/d")))
公式顯示結果
10/11、11/3

第二,給它二維的範圍,例如 A2:B3,會一列一列接(先 蘋果紅茶、37,再 青茶、8),變成 蘋果紅茶,37,青茶,8。

生成 SKU 時,空欄也有位置

方格子 TEXTJOIN 舊文的商品貨號案例,可以拿來理解 FALSE 的用途。另開空白表,在 A1:D3 放:

產品版本顏色容量
P01V2黑
P01(留空)黑

容量欄輸入上表公式,保留文字前導零。E2 輸入,向下填到 E3:

Google 試算表公式
fx

保留產品、版本、顏色、容量四個位置,不略過缺漏規格

=TEXTJOIN("-", FALSE, A2:D2)

兩列結果為 P01-V2-黑-0016、P01--黑-0016。第二列的連續減號代表版本缺漏,不會把後面的顏色誤當版本;但它仍是待補資料,不代表合法商品已自動編碼完成。

正式貨號還要訂好欄位順序、缺值規則、唯一性與字元限制。若規格本身含 -,就可能和分隔符號混淆,要先定義跳脫或禁止使用的規則;TEXTJOIN 本身不會檢查碰撞,也不保證貨號獨一無二。

JOIN

JOIN 的用途跟 TEXTJOIN 很像,分隔符號寫在最前面,後面放要接的東西。Excel 沒有 JOIN,要用 TEXTJOIN。

語法:

  • 分隔符號:接在每兩段中間的字串。
  • 值或陣列:單一個值,或一維的陣列、範圍。可以放好幾個。

它沒有「略過空白」這個參數,所以也沒有選擇。A 欄五個品項都有字,直接接:

Google 試算表公式
fx

把 A 欄的品項接起來

=JOIN("、", A2:A6)
公式顯示結果
蘋果紅茶、青茶、烏龍茶、蘋果綠茶、檸檬紅茶

多個一維範圍可以一起放:

公式顯示結果
蘋果紅茶、青茶、蘋果綠茶、檸檬紅茶

JOIN 只吃一維,一欄或一列都可以,但不能是 A2:B3 這種二維範圍,給二維會出現 #VALUE!。真的要接二維,先用 FLATTEN 壓成一欄:

Google 試算表公式
fx

先壓平成一欄再接

=JOIN("、", FLATTEN(A2:B3))

結果是 蘋果紅茶、37、青茶、8,也就是一列一列壓平。

C 欄有空白, 會留下連續的分隔符號,變成 少冰、、去冰、、微糖,也就是跟 TEXTJOIN 的 FALSE 一樣。需要略過空白就直接用 TEXTJOIN,我自己是看到 JOIN 就改成 TEXTJOIN。

CONCATENATE

CONCATENATE 把幾個字串依序接在一起,中間沒有分隔符號。

語法:

我要把 A2、A3、A6 三個品項用頓號接起來。用 CONCATENATE 就是:

Google 試算表公式
fx

用 CONCATENATE 接三格

=CONCATENATE(A2, "、", A3, "、", A6)

用 & 寫一樣的事:

Google 試算表公式
fx

用 & 運算子接三格

=A2&"、"&A3&"、"&A6

兩條的結果一樣:

公式顯示結果
蘋果紅茶、青茶、檸檬紅茶
蘋果紅茶、青茶、檸檬紅茶
蘋果紅茶、青茶、檸檬紅茶

我個人沒有用 CONCATENATE 的理由很簡單,& 比較短,要接的段數一多,打出來差很多。

實務上最常碰到的是兩欄合成一格。例如 A 欄是姓名、B 欄是電話,想合在同一格變成「林雅婷 0912-345-678」,中間那個空格也是一段字串,用雙引號包起來接在中間:

Google 試算表公式
fx

姓名和電話合在同一格,中間空一格

=A2&" "&B2

要整欄一起合,就把單格換成範圍,外面包 ARRAYFORMULA:。

CONCAT

CONCAT 是函式版本的 &,把兩個值接在一起。

語法:

兩個參數都必填,而且只能剛好兩個:

公式顯示結果
蘋果紅茶青茶

要在中間放頓號,就是三個東西,CONCAT 做不到。 會出錯,結果是 #N/A,提示參數個數不對。也就是說只要需要分隔符號,就得改用 &、CONCATENATE 或 TEXTJOIN,所以我幾乎不碰它。這是 Google 試算表的限制,Excel 的 CONCAT 可以接多個值,也吃範圍(Excel 2019 起)。

練習

1

拆出兩杯飲料

A2 是 Apple Tea, Milk Tea,想拆成 Apple Tea 和 Milk Tea 兩格,公式怎麼寫?

2

杯數少於 10 的品項

用上面那張訂單表,把杯數少於 10 的品項用斜線接成一格,公式怎麼寫?

拆字串如果規則比「用某個符號切」複雜,像是要從一長串文字裡抓出電話或編號,可以看 REGEX 擷取文字。

我是喜特先生,Mr. Sheet,我們下個教學見!

這個步驟如果每週都要重做

現在
每次手動把一格名單拆開整理,再接成一句話貼進通知信
自動化後
名單一更新就自動拆好、整理好,每天組成一則通知寄給同事
有類似需求,可以來信聊聊
分享:
#SPLIT#TEXTJOIN#JOIN#字串合併#資料整理
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。