使用情境
今天的文章想分享,在試算表做資料處理,遇到需要「轉置」(即行列互換)的情境時,可以用什麼方法解決。
假設你收到一份這樣的資料:

你希望可以進行行列互換,即原本第一行中的週一、週二 …. 週五調整到 A 欄,原先 A 欄內容調整到第一行,如下圖:

這樣可以怎麼做呢?
💡 本文範例請點選此連結獲取,請大家點選:左上角檔案 > 建立副本,就可以編輯囉
方法一:貼上轉置資料
第一步,先選取你想轉置的區域。
這邊我們選取 A1~F5 區間,也就是希望轉置的範圍。

第二步,複製此區域。
你可以使用快捷鍵 Ctrl + C 進行複製,或是點選:編輯 > 複製。

第三步,回到試算表上,將滑鼠選在你打算貼上的格子處。
這邊我們選在 A8。

第四步,點選:編輯 > 選擇性貼上 > 貼上轉置資料。

資料就完成轉置啦!

如果你仔細看會有幾個小發現:
- 資料格式也會複製過來。舉例:原本週一~週五的黃底,也跟著一起貼過來了。
- 資料公式也會複製過來。舉例:客單價的公式是用 GMV / 訂單(第四行除以第三行),貼上之後依然是 GMV / 訂單(D 欄除以 C 欄)
- 「貼上轉置資料」是一次性:如果你更新原本的資料,新的資料並不會跟著轉置過來。
為了解決最後一個問題,我們希望隨著原本資料的更新,也能跟著轉置,接下來會跟大家介紹 TRANSPOSE 函數的應用。
方法二:TRANSPOSE 函數
TRANSPOSE 函數的公式為:
= TRANSPOSE(範圍)

以相同例子來看,若我們想針對此數據進行行列互換,只需要在 A8 處下公式:
=TRANSPOSE(A1:F5)

再點選 Enter 後就可以得到同樣的結果啦!

另外 TRANSPOSE 函數與 IMPORTRANGE 函數有異曲同工之妙。假設你在下 TRANSPOSE 函數時,寫下:
=TRANSPOSE(1:5)

除了可以得到相同結果,當你在原數據新增一欄週六,原本下的 TRANSPOSE 函數也會幫你一同更新資料。

不過 TRANSPOSE 函數沒辦法將原先的格式也一併複製過來,在這點上以貼上轉置資料會更加方便!
TRANSPOSE + IMPORTRANGE
另一個 TRANSPOSE 實用的場景是搭配 IMPORTRANGE 函數使用。
這邊幫大家複習 IMPORTRANGE 的公式為:
=importrange("試算表網址", "試算表匯入範圍")
如果與 TRANSPOSE 合併使用,則會寫成:
=transpose(importrange("試算表網址", "試算表匯入範圍"))
以相同的範例,我們希望 “raw” 分頁上的數據,都以行列互換的方式呈現,因此可以寫成:
=transpose(importrange("https://docs.google.com/spreadsheets/d/1tEsSHiTyCrWC_EHbkYbTtfP2Obn87Q-E4OkA1BUYcec/edit?gid=1070453391#gid=1070453391","raw!A:Z"))

這麼一來,就達成資料自動化轉置的目的囉!
Pingback: 莫非工具 | 文章導覽 - 墨菲莫非