TRANSPOSE 函數的主要功能是將陣列或儲存格範圍的行列方向互換。只要輸入公式,就能將橫向資料轉為直向,或將直向資料轉為橫向,省去手動複製貼上的麻煩。
Excel TRANSPOSE 函數語法
=TRANSPOSE(陣列或範圍)| 參數 | 必填 | 說明 |
|---|---|---|
| 陣列或範圍 | 是 | 想要進行行列互換的資料範圍或陣列。 |
回傳:行列互換後的陣列資料。
適用版本:Excel 2007 以上(Microsoft 365 與 Excel 2021 以上支援動態陣列自動溢出)
TRANSPOSE 函數範例
範例 1:單列資料轉置為單欄
將橫向排列的月份表頭轉置為直向排列。
| 一月 | 二月 | 三月 |
|---|
在 A3 輸入公式:
=TRANSPOSE(A1:C1)結果:一月。公式將 A1:C1 的橫向資料轉置為直向。公式輸入於 A3,第一格會顯示「一月」,並自動向下溢出至 A5,依序顯示二月與三月。
範例 2:二維表格行列互換
將員工的出勤紀錄表由直向名單轉為橫向名單。
| 姓名 | 星期一 | 星期二 |
|---|---|---|
| 王小明 | 出席 | 出席 |
| 陳怡君 | 請假 | 出席 |
在 E1 輸入公式:
=TRANSPOSE(A1:C3)結果:姓名。將 3 列 3 欄的表格轉置成 3 欄 3 列。公式輸入在 E1,顯示左上角第一格「姓名」,其餘資料會自動向右及向下溢出,讓姓名變成欄標題。
範例 3:結合排序函數進行轉置
將業績資料由高到低排序後,再轉置為橫向呈現。
| 姓名 | 業績 |
|---|---|
| 王小明 | 5000 |
| 陳怡君 | 8000 |
| 林家豪 | 6500 |
在 D1 輸入公式:
=TRANSPOSE(SORT(A2:B4, 2, -1))結果:陳怡君。先用 SORT 函數將業績由高到低排序,再透過 TRANSPOSE 將 3 列 2 欄的資料轉置為 2 列 3 欄。D1 顯示最高業績的姓名「陳怡君」,其餘結果會自動溢出。
使用 TRANSPOSE 的技巧與注意事項
- 在 Microsoft 365 或 Excel 2021 中,只需在單一儲存格輸入公式即可自動溢出。舊版 Excel 則需要先選取目標範圍,再按 Ctrl+Shift+Enter。
- TRANSPOSE 建立的是動態連結,當原始資料修改時結果會自動更新。若只需要轉置一次且不連動,建議使用「選擇性貼上」中的「轉置」功能。
- 此函數無法改變儲存格的格式(如背景顏色、框線),只會轉置儲存格內的資料值。
TRANSPOSE 常見錯誤與解決方法
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
| #SPILL! | 轉置後的目標範圍內有其他資料、空白字元或合併儲存格阻擋了公式溢出。 | 清除目標範圍內的資料或解除合併儲存格,讓公式有足夠的空白空間顯示完整結果。 |
| 空白儲存格顯示為 0 | 參照範圍內包含空白儲存格時,陣列公式預設會將其轉換為數值 0。 | 搭配 IF 函數處理,例如 =IF(TRANSPOSE(A1:B5)="","",TRANSPOSE(A1:B5))。 |
Google 試算表可以用 TRANSPOSE 嗎?
Google 試算表完全支援 TRANSPOSE 函數,用法與 Excel 相同,且預設支援動態陣列溢出,不需使用特殊快捷鍵即可直接呈現轉置結果。
下載 TRANSPOSE 範例檔
上面的範例都整理在這個檔案裡,每個範例一個工作表,黃色格子是公式,可以直接改資料看結果變化:TRANSPOSE 範例.xlsx(範例公式的結果經過兩個模型交叉核對)。
常見問題
為什麼我的 TRANSPOSE 公式顯示 #SPILL! 錯誤?
這是因為公式嘗試將結果溢出到相鄰的儲存格,但目標範圍內已經有其他資料。請清除阻擋的資料,公式就會自動顯示完整結果。
轉置後的空白儲存格為什麼會變成 0?
這是 Excel 陣列公式的預設行為。如果希望保持空白,可以將公式改寫為 =IF(TRANSPOSE(A1:B5)="","",TRANSPOSE(A1:B5))。
舊版 Excel 要怎麼使用 TRANSPOSE 函數?
在 Excel 2019 及更早版本中,必須先選取與轉置結果大小相同的空白範圍,輸入公式後按下 Ctrl+Shift+Enter,將其作為陣列公式執行。
相關函數
這篇收錄在「Excel 函數字典」。




