更新於 2024/04/06閱讀時間約 7 分鐘

TOCOL、TOROW,把資料拉成一條!

今天要來介紹的是 TOCOL 和 TOROW 這兩個最近新增的函式,它們的功用是可以把資料拉〜成一條,而 TOCOL 則是把資料轉成一欄、而 TOROW 是把資料轉成一列。
示範一個 TOCOL 的效果:
我這邊把 C2 到 E11 這個範圍內的儲存格,全部拉成長長的一欄了。
TOCOL 跟 TOROW 很適合展開陣列外,後續還可以再跟其他的函式配合,像是 QUERY、FILTER、IMPORTRANGE 之類的都很不錯。這就是 TOCOL 跟 TOROW 的威力,而且語法也不會太複雜,今天就來帶著大家一起看看!
來延伸閱讀一下下:

語法說明與範例

💡 歡迎到這個試算表來看看怎麼做、複製一份一起練習喔!
TOCOL 應該是從「to column」來的,意思是「轉換成欄」,而 TOROW 也是「to row」,意思是「轉換成列」。我們來看看語法:
=TOCOL(範圍, [略過空白或錯誤], [掃描模式])
=TOROW(範圍, [略過空白或錯誤], [掃描模式])
  • 範圍:想要轉換的範圍。
  • 略過空白或錯誤:選填,預設是 0。你可以用特定的數字,告訴試算表在範圍裡遇到空白或錯誤(#N/A、#ERROR 等等的)時該用什麼模式處理。等等說明!
  • 掃描模式:選填,預設是 false。你可以在這邊輸入布林值:
true:逐欄(從上到下)掃描指定範圍
false:逐列(從左到右)掃描指定範圍
這邊的掃描模式是怎麼運作的,等等也會說明!

「略過空白或錯誤」參數
可以指定的模式跟代表的數字有:
0:保留所有值,不略過任何值
1:略過空白
2:略過錯誤
3:略過空白和錯誤
如果在這邊填了 1、2、3,試算表在讀取範圍的時候,會跳過這類有空白或錯誤資料,直接接到下一個沒有這種資料的儲存格。
例如說我有個這樣的資料範圍:
我塞了幾個空白的儲存格、也塞了幾個有錯誤的。
我在這邊用 TOCOL 示範把 A2 到 C10 拉成一欄時,0、1、2、3 這四個模式的執行結果(可參照練習試算表的「略過空白或錯誤」模式示範)。語法都是:
=TOCOL(A2:C10, 模式號碼)
你可以稍稍比較一下,再決定一下你想要什麼樣的結果!我個人比較喜歡用最右邊的模式 3,可以在把範圍拉成一條的同時,也把空白和錯誤過濾掉,很方便。

「掃描模式」參數
剛剛提到了兩種掃描的模式,可以用 true 和 false 來指定:
true:逐欄(從上到下)掃描指定範圍
false:逐列(從左到右)掃描指定範圍
這邊逐欄的「從上到下」、還有逐列的「從左到右」是什麼意思呢?
你可以想像一下在執行這兩個函式的時候,Google 試算表會拿一把剪刀,把你的範圍裁剪、黏貼成一欄或是一列。
舉例來說,把這模式設定成「true」的逐欄掃描的時候,試算表會把下圖的 A 欄剪下來、把 B 欄剪下來、把 C 欄剪下來,再拼在一起:
=TOCOL(A2:C10,,true)
而 false 的話,則是「逐列掃描」,函式就會從範圍的第一列開始由左往右裁剪、再來是第二列、第三列⋯⋯:
=TOCOL(A2:C10,,false)
所以掃描模式會影響顯示結果。你可以比較寫 true 跟 false 的差別,看看你需要哪一種;相對地,如果你不在意顯示結果、只是想把資料拉成一條的話,這邊不指定任何模式也完全 OK。

小補充:TOCOL 跟 FLATTEN 的差異?
你可能之前聽過 FLATTEN 這個函式,功能也可以把多欄併成一欄。聽到這裡,感覺功能跟 TOCOL 很像嗎?的確是的,但有兩點關鍵的差異:
  • FLATTEN 的掃描模式只有一個(從左到右),但 TOCOL 有兩種可以選擇。
  • FLATTEN 不會略過空白的值,但 TOCOL 可以略過空白,還多了可以略過回傳錯誤儲存格的模式。
整體而言, TOCOL 可以做更細緻的設定、但 FLATTEN 不行,所以我會推薦你試著擁抱新技術,用 TOCOL 來解決結合範圍的問題!

應用

UNIQUE + TOCOL:在多欄的範圍中取唯一值
💡 可以打開示範試算表的「UNIQUE + TOCOL」一起練習喔!
簡單示範一下 TOCOL 的應用層面吧!假如我這邊有份名單:
這邊多多少少有些重複的地方,我想找到這份名單裡面不重複的名字有誰。
我的想法是利用之前的文章介紹過的 UNIQUE 的函式,可以在一欄或一列裡面,篩選出獨一無二的值,但在這之前要先用 TOCOL 把這個名單拉成一欄才行。這麼一來,就會推出:
=UNIQUE(TOCOL(A2:D7))
來看看效果:
這樣就完成啦!如果想要在多欄或多列做同樣的操作,就要搭配 FLATTEN 函式來達成(延伸閱讀:三招移除重複資料)。但就像前面提到的,因為 TOCOL 可以做更細緻的設定,遇到空白或是錯誤的資料還可以先行處理,我會比較偏好使用 TOCOL。

TOCOL + VSTACK:把多個表格全部拉成一欄
💡 可以打開示範試算表的「TOCOL + VSTACK」一起練習喔!
TOCOL 也當然可以搭配前些日子介紹的 VSTACK(延伸閱讀:VSTACK、HSTACK:堆疊範圍、統整資料),把多個表格的資訊變成一欄。
假如我們有幾個這樣的表格:
我想把各個組別裡面的國家名單取出來,變成一欄清單的話,怎麼做呢?
我們總之可以用 VSTACK,把這些表格先併在一起:
=VSTACK(A2:B4, D2:E4, A7:B9, D7:E9)
目前看起來像這樣子:
合併是合併了,接下來就是對這個結果用 TOCOL 把這些數值全部拉成一欄就解決了:
=TOCOL(VSTACK(A2:B4, D2:E4, A7:B9, D7:E9))
但這個結果應該還可以更好!我們還可以在 TOCOL 的時候也可以善用剛剛的「略過空白或錯誤」模式,把空白的儲存格過濾掉:
=TOCOL(VSTACK(A2:B4, D2:E4, A7:B9, D7:E9), 1)
這邊用 3 號模式也可以:
=TOCOL(VSTACK(A2:B4, D2:E4, A7:B9, D7:E9), 3)
得到的結果是:
搞定囉!這樣就完成了。

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.