A2 貼了一格 蘋果紅茶,青茶,烏龍茶,我想把它拆成三格;反過來,D 欄有一排名單,我想接成一句話放進通知裡。
拆開用 SPLIT,合起來有 TEXTJOIN、JOIN、CONCATENATE、CONCAT 四種,再加上大家最常用的 &。今天一次整理。日常多半只會用到 SPLIT、TEXTJOIN 跟 &,另外兩個比較像是看到別人的表格時要認得。
TEXT 怎麼把數字變文字,在 TEXT 函式入門 講過;清空格、清怪字元在 文字清理函式。這篇不重講。
怎麼選
- 一格拆成多格:
SPLIT。 - 一排或一欄合成一格,想略過空白、想搭配
FILTER:TEXTJOIN。 - 一維的範圍合成一格,不需要略過空白:
JOIN。 - 固定那幾格接起來(例如姓名和電話合在同一格):
&最短,CONCATENATE一樣的事寫得比較長。 - 只有兩個東西要接:
CONCAT,但它在 Google 試算表只吃兩個參數,我幾乎不用。
接下來的合併範例用這張小表,A 到 C 欄是訂單,H 欄放兩個日期:
| A | B | C | H | |
|---|---|---|---|---|
| 1 | 品項 | 杯數 | 備註 | 日期 |
| 2 | 蘋果紅茶 | 37 | 少冰 | 2026/10/11 |
| 3 | 青茶 | 8 | 2026/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 是 蘋果紅茶,青茶,烏龍茶,用逗號拆:
用逗號把一格拆成三格
=SPLIT(A2, ",")來看看結果,公式放在 B2,會往右展開到 D2:
| B | C | D | |
|---|---|---|---|
| 2 | 蘋果紅茶 | 青茶 | 烏龍茶 |
要拆成直的也可以,外面包 TRANSPOSE:
拆完轉成直的
=TRANSPOSE(SPLIT(A2, ","))結果會是 B2 到 B4 三格,由上而下。
展開的位置如果已經有東西,SPLIT 不會硬蓋過去,而是回 #REF!,提示「系統未展開陣列結果,以免覆蓋 C2 中的資料。」(C2 換成被擋住的那一格)。如果 A2 是 a,b,c,B2 放 SPLIT,但 C2 本來就有字,B2 就會是 #REF!。
逐字分割
這是 SPLIT 最容易讓人愣住的地方。
我有一格 A2 是 Apple Tea, Milk Tea,想用「逗號加空格」切成兩杯飲料,直覺會寫:
用逗號加空格拆,沒有指定第三個參數
=SPLIT(A2, ", ")你會得到四格而不是兩格:
| B | C | D | E | |
|---|---|---|---|---|
| 2 | Apple | Tea | Milk | Tea |
原因是第三個參數預設 TRUE,", " 被當成兩個分隔符號,逗號切一次、空格也切一次,Apple Tea 中間的空格也被切開了。把第三個參數改成 FALSE,才會把 ", " 當成一整串:
把逗號加空格當成一整個分隔符號
=SPLIT(A2, ", ", FALSE)| B | C | |
|---|---|---|
| 2 | Apple Tea | Milk Tea |
反過來,預設的逐字分割也有它的用處。像 A2 是 蘋果紅茶、青茶,烏龍茶,頓號跟逗號混著用,把兩個字元寫在一起就一次切乾淨:
頓號跟逗號都當分隔符號
=SPLIT(A2, "、,")| B | C | D | |
|---|---|---|---|
| 2 | 蘋果紅茶 | 青茶 | 烏龍茶 |
這時如果加了 FALSE,SPLIT(A2, "、,", FALSE) 會找不到「頓號加逗號」這串連在一起的字,整格就原封不動,只有 B2 一格。
分隔符號一旦超過一個字元,先想一下你要的是「每個字元都切」還是「整串才切」。要整串的話,第三個參數一定要寫 FALSE。
空白要不要留
第四個參數管的是空字串。A2 是 蘋果紅茶,,烏龍茶,中間少了一項:
預設會丟掉空白,後面的欄位會往前擠
=SPLIT(A2, ",")| B | C | |
|---|---|---|
| 2 | 蘋果紅茶 | 烏龍茶 |
烏龍茶跑到第二格了。如果欄位位置有意義,例如第三欄一定是備註,就要保留空白:
保留空白,欄位位置不變
=SPLIT(A2, ",", TRUE, FALSE)| B | C | D | |
|---|---|---|---|
| 2 | 蘋果紅茶 | 烏龍茶 |
要保留空白時,第三個參數也得寫出來,因為它排在第四個前面,沒辦法跳過。
自動變成數字或日期
SPLIT 切出來的內容,如果長得像數字或日期,會被轉成數字或日期。這在貼進來的商品編號上特別會害人。
A2 是 001,0042,17:
拆編號
=SPLIT(A2, ",")會得到:
| B | C | D | |
|---|---|---|---|
| 2 | 1 | 42 | 17 |
前面的 0 都不見了(0912 也一樣會變成 912),因為它們已經是數字 1、42、17。用 ISNUMBER 確認一下:
確認切出來的是不是數字
=ARRAYFORMULA(ISNUMBER(SPLIT(A2, ",")))三格都是 TRUE。
日期也一樣。A2 是 2026/10/11;2026/11/03,用分號拆開:
確認切出來的是不是數字(日期在試算表裡就是數字)
=ARRAYFORMULA(ISNUMBER(SPLIT(A2, ";")))兩格都是 TRUE,它們是日期序號,不再是文字。日期為什麼是數字,在 日期與時間入門 講過。
這個特性也能反過來用。要把 2026/10/11 拆成年、月、日三個數字:
拆日期字串成三個數字
=SPLIT("2026/10/11", "/")公式放在 B2 的話,B2 到 D2 會是:
| B | C | D | |
|---|---|---|---|
| 2 | 2026 | 10 | 11 |
如果你要保留 001 這種前導 0,我的做法是在每一段前面先黏一個底線,讓它變成文字,切完再把底線拿掉:
每段前面加底線再切,最後用 MID 拿掉
=ARRAYFORMULA(MID(SPLIT("_"&SUBSTITUTE(A2, ",", ",_"), ","), 2, 20))這條公式由內往外讀:SUBSTITUTE 把每個逗號換成「逗號加底線」,前面再補一個底線,所以每一段都以底線開頭;SPLIT 切完都是文字;MID 從第 2 個字元取起,把底線拿掉。結果:
| B | C | D | |
|---|---|---|---|
| 2 | 001 | 0042 | 17 |
合併
TEXTJOIN
TEXTJOIN 用指定的分隔符號,把多個字串或整個範圍接成一格。
語法:
- 分隔符號:接在每兩段中間的字串。
- 略過空白:必填,
TRUE或FALSE。TRUE會跳過空白儲存格。 - 文字1、文字2⋯⋯:可以是單格、範圍、其他函式的結果,想放幾個都行。
C 欄備註有三格有字、兩格空白,用頓號接起來:
略過空白,把備註接起來
=TEXTJOIN("、", TRUE, C2:C6)| 公式 | 顯示結果 |
|---|---|
| 少冰、去冰、微糖 | |
| 少冰、、去冰、、微糖 |
第二列把 TRUE 改成 FALSE,空白格也算一段,所以中間出現連續的頓號。我幾乎都寫 TRUE,只有在要保留位置對應時才寫 FALSE。
它可以同時吃好幾個參數,範圍跟單格、文字都能混著放:
| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶-青茶-其他 |
TEXTJOIN 最好用的地方,是可以搭配 FILTER。我想把杯數超過 20 的品項接成一句話:
篩選後再合併
=TEXTJOIN("、", TRUE, FILTER(A2:A6, B2:B6 > 20))杯數 37、112、21 三筆符合,結果是:
| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶、烏龍茶、蘋果綠茶 |
篩選條件如果沒有任何一筆符合,FILTER 回 #N/A,TEXTJOIN 也就跟著 #N/A。這邊包一層 IFERROR:
沒有符合的資料時顯示「無」
=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 明確轉換:
先把日期轉成指定樣子的文字再接
=TEXTJOIN("、", TRUE, ARRAYFORMULA(TEXT(H2:H3, "m/d")))| 公式 | 顯示結果 |
|---|---|
| 10/11、11/3 |
第二,給它二維的範圍,例如 A2:B3,會一列一列接(先 蘋果紅茶、37,再 青茶、8),變成 蘋果紅茶,37,青茶,8。
生成 SKU 時,空欄也有位置
方格子 TEXTJOIN 舊文的商品貨號案例,可以拿來理解 FALSE 的用途。另開空白表,在 A1:D3 放:
| 產品 | 版本 | 顏色 | 容量 |
|---|---|---|---|
| P01 | V2 | 黑 | |
| P01 | (留空) | 黑 |
容量欄輸入上表公式,保留文字前導零。E2 輸入,向下填到 E3:
保留產品、版本、顏色、容量四個位置,不略過缺漏規格
=TEXTJOIN("-", FALSE, A2:D2)兩列結果為 P01-V2-黑-0016、P01--黑-0016。第二列的連續減號代表版本缺漏,不會把後面的顏色誤當版本;但它仍是待補資料,不代表合法商品已自動編碼完成。
正式貨號還要訂好欄位順序、缺值規則、唯一性與字元限制。若規格本身含 -,就可能和分隔符號混淆,要先定義跳脫或禁止使用的規則;TEXTJOIN 本身不會檢查碰撞,也不保證貨號獨一無二。
JOIN
JOIN 的用途跟 TEXTJOIN 很像,分隔符號寫在最前面,後面放要接的東西。Excel 沒有 JOIN,要用 TEXTJOIN。
語法:
- 分隔符號:接在每兩段中間的字串。
- 值或陣列:單一個值,或一維的陣列、範圍。可以放好幾個。
它沒有「略過空白」這個參數,所以也沒有選擇。A 欄五個品項都有字,直接接:
把 A 欄的品項接起來
=JOIN("、", A2:A6)| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶、青茶、烏龍茶、蘋果綠茶、檸檬紅茶 |
多個一維範圍可以一起放:
| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶、青茶、蘋果綠茶、檸檬紅茶 |
JOIN 只吃一維,一欄或一列都可以,但不能是 A2:B3 這種二維範圍,給二維會出現 #VALUE!。真的要接二維,先用 FLATTEN 壓成一欄:
先壓平成一欄再接
=JOIN("、", FLATTEN(A2:B3))結果是 蘋果紅茶、37、青茶、8,也就是一列一列壓平。
C 欄有空白, 會留下連續的分隔符號,變成 少冰、、去冰、、微糖,也就是跟 TEXTJOIN 的 FALSE 一樣。需要略過空白就直接用 TEXTJOIN,我自己是看到 JOIN 就改成 TEXTJOIN。
CONCATENATE
CONCATENATE 把幾個字串依序接在一起,中間沒有分隔符號。
語法:
我要把 A2、A3、A6 三個品項用頓號接起來。用 CONCATENATE 就是:
用 CONCATENATE 接三格
=CONCATENATE(A2, "、", A3, "、", A6)用 & 寫一樣的事:
用 & 運算子接三格
=A2&"、"&A3&"、"&A6兩條的結果一樣:
| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶、青茶、檸檬紅茶 | |
| 蘋果紅茶、青茶、檸檬紅茶 | |
| 蘋果紅茶、青茶、檸檬紅茶 |
我個人沒有用 CONCATENATE 的理由很簡單,& 比較短,要接的段數一多,打出來差很多。
實務上最常碰到的是兩欄合成一格。例如 A 欄是姓名、B 欄是電話,想合在同一格變成「林雅婷 0912-345-678」,中間那個空格也是一段字串,用雙引號包起來接在中間:
姓名和電話合在同一格,中間空一格
=A2&" "&B2要整欄一起合,就把單格換成範圍,外面包 ARRAYFORMULA:。
CONCAT
CONCAT 是函式版本的 &,把兩個值接在一起。
語法:
兩個參數都必填,而且只能剛好兩個:
| 公式 | 顯示結果 |
|---|---|
| 蘋果紅茶青茶 |
要在中間放頓號,就是三個東西,CONCAT 做不到。 會出錯,結果是 #N/A,提示參數個數不對。也就是說只要需要分隔符號,就得改用 &、CONCATENATE 或 TEXTJOIN,所以我幾乎不碰它。這是 Google 試算表的限制,Excel 的 CONCAT 可以接多個值,也吃範圍(Excel 2019 起)。
練習
拆出兩杯飲料
A2 是 Apple Tea, Milk Tea,想拆成 Apple Tea 和 Milk Tea 兩格,公式怎麼寫?
杯數少於 10 的品項
用上面那張訂單表,把杯數少於 10 的品項用斜線接成一格,公式怎麼寫?
拆字串如果規則比「用某個符號切」複雜,像是要從一長串文字裡抓出電話或編號,可以看 REGEX 擷取文字。
我是喜特先生,Mr. Sheet,我們下個教學見!
這個步驟如果每週都要重做
- 現在
- 每次手動把一格名單拆開整理,再接成一句話貼進通知信
- 自動化後
- 名單一更新就自動拆好、整理好,每天組成一則通知寄給同事
接下來可以
相關文章
查看所有文章TEXT 函式入門:用格式碼把數字和日期變成指定樣子的文字
TEXT 的語法與常用格式碼:0、#、千分位、百分比、yyyy/mm/dd、星期、hh:mm,並說明 TEXT 的結果是文字,不能再拿去加總。
文字清理函式參考:TRIM、CLEAN、SUBSTITUTE、PROPER 與看不見的空格
整理 TRIM、CLEAN、SUBSTITUTE、REPLACE、UPPER、LOWER、PROPER 的語法與限制,包含 TRIM 清不掉全形空格與 CHAR(160)、CLEAN 只清 ASCII 0 到 31、SUBSTITUTE 第 4 參數只換第 N 次,以及用 UNICODE 找出看不見的字元。
電話、地址、單號、Email:四種混亂文字的 REGEX 實戰整理
拿一份客服回饋的混亂文字,用 REGEXEXTRACT、REGEXMATCH、REGEXREPLACE 擷取台灣手機與市話、拆出縣市與行政區、抓訂單單號、取出 Email 網域,最後用 ARRAYFORMULA 處理整欄。
留言討論
共 0 則留言
