在上次的「
怎麼把文字分隔成不同欄?」提到,我們可以用 Google 試算表內建的功能,把這樣的資料分隔出來,落在不同欄上。例如把這樣的資料:
變成這樣:
但如果資料是動態的(例如你從 IMPORTRNAGE 導入的資料、QUERY 查出來的資料、或是從函式產生的結果等)、或是我們想要在分隔上做更細緻的設定,其實還有一個函式可以幫忙我們,叫做「SPLIT」。
馬上來看看怎麼做吧!
語法
SPLIT 函式的語法很簡單,它只有兩個必要的參數、還有兩個選填的:
=SPLIT(文字, 分隔符號, [逐個分隔], [移除空白結果])
- 文字:你打算要分隔的文字或儲存格位址
- 分隔符號:用來分隔的標準
- 逐個分隔:選填,預設是 true。我們等等會進一步說明。
- 移除空白結果:選填,預設是 true,等等也會說明。
「逐個分隔」是什麼東西?
「如果你的分隔符號有兩個字元以上,你要不要把每個字元、都當成一個獨立的分隔標準?」的意思。舉個例子,我們有這串字:
今天不是星期三 明天是星期四
我們的分隔符號設定為「不是」、且把「逐個分隔」設定為 TRUE 的話:
這是因為 SPLIT 把「不」跟「是」都當作分隔符,所以:
今天不是星期三 明天是星期四
--> 今天 / 星期三 明天 / 星期四
那如果把這邊寫成 FALSE 的話:
「不是」被當成分隔符,隔開了「今天」跟「星期三」,但是「明天是」的「是」被留下來了。這是因為沒有逐個分割、只把「不是」視為一個分隔符的關係:
今天不是星期三 明天是星期四
--> 今天 / 星期三 明天是星期四
不過老實說,我覺得實務上在用 SPLIT 的時候,大部分只會遇到分隔符號只有一個字元的狀況,要考量到逐個分隔的情況真的很少,所以這部分你可以看看就好!
注意事項
- 如果要分隔的文字長度過長(超過 50000 個字元),SPLIT 會給你 #REF! 錯誤。
- SPLIT 的結果需要有足夠的空間讓它展開,如果被其他資料擋住的話,會回傳 #REF! 錯誤。
- SPLIT 的結果不能編輯!你可能需要複製後貼上值,把資料轉成靜態的後再編輯。
- 分隔符號有大小寫區分,寫的時候要小心。
- SPLIT 的結果會往右出現,你如果想要讓 SPLIT 的結果是直的一欄,可以在 SPLIT 外面再包一層 TRANSPOSE 函式:
=TRANSPOSE(SPLIT(...))
應用範例
接下來我會示範兩個可以活用 SPLIT 的方式。歡迎到
這邊複製試算表,跟我一起做喔!
一、分隔日期和時間
假如你有個日期和時間的資料,格式是「yyyy-mm-dd hh:mm:ss」(年-月-日 時-分-秒,位數固定):
我們就可以很簡單地用 SPLIT(或是上次介紹的「
把文字分成不同欄」的功能),把日期跟時間分開,像是這樣:
=SPLIT(A2, " ")
來看看效果:
如果你想接著把下面的一起完成,也可以搭配 ArrayFormula 使用:
=ARRAYFORMULA(SPLIT(A2:A20, " ")
二、選擇分隔後的第N個東西
再來看一組資料,這邊有幾個假地址:
如果這邊直接做 SPLIT 的話,會像是這樣:
=SPLIT(A2, " / ")
可是如果我只想要「中壢區」、「蘆竹區」、「新莊區」這邊的第二組資料呢?你可以用 INDEX 函式,把 SPLIT 包起來,像是:
=INDEX(SPLIT(A2, " / "), 2)
INDEX 的 2 代表你要第二組資料,如果你要第一組的話,那就是 1,第三組就是 3,以此類推!
今天介紹了基本 SPLIT 的運用方法,其他活用的方式還有很多!如果你有任何應用的點子也歡迎跟我聊聊。
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!