VSTACK 函數的作用是將多個陣列或儲存格範圍以垂直方向(上下)堆疊合併。只需輸入各個資料範圍,就能快速將分散的表格整合成一份完整的清單,大幅提升資料整理效率。
Excel VSTACK 函數語法
=VSTACK(陣列1, [陣列2], ...)| 參數 | 必填 | 說明 |
|---|---|---|
| 陣列1 | 是 | 要合併的第一個陣列或儲存格範圍。 |
| 陣列2 | 選填 | 要接續在第一個陣列下方合併的其他陣列或儲存格範圍,可包含多個。 |
回傳:垂直合併後的新陣列(會自動溢出至相鄰的儲存格)。
適用版本:Microsoft 365、Excel 2024 以上
VSTACK 函數範例
範例 1:合併單欄名單
合併兩個部門的員工名單
| 業務部 | 行銷部 |
|---|---|
| 王小明 | 陳怡君 |
| 林志明 | 張建國 |
| 李美玲 |
在 D2 輸入公式:
=VSTACK(A2:A3, B2:B4)結果:王小明。公式會將業務部名單(A2:A3)與行銷部名單(B2:B4)上下合併。結果會從 D2 儲存格開始向下溢出顯示共五個人的名單,D2 顯示第一筆資料「王小明」。
範例 2:合併帶有表頭的表格
合併帶有表頭的兩張業績表
| 姓名 | 業績 | 姓名 | 業績 |
|---|---|---|---|
| 王小明 | 5000 | 陳怡君 | 8000 |
| 林志明 | 6000 | 張建國 | 7500 |
在 F1 輸入公式:
=VSTACK(A1:B3, C2:D3)結果:姓名。為了保留一組表頭,第一個陣列選取包含表頭的 A1:B3,第二個陣列僅選取資料範圍 C2:D3。公式結果會從 F1 開始溢出成兩欄五列的完整表格。
範例 3:合併後進行排序
合併兩張出勤紀錄並依日期排序
| 一廠 | 日期 | 二廠 | 日期 |
|---|---|---|---|
| 王小明 | 2026/10/05 | 陳怡君 | 2026/10/02 |
| 林志明 | 2026/10/01 | 張建國 | 2026/10/08 |
在 F2 輸入公式:
=SORT(VSTACK(A2:B3, C2:D3), 2, 1)結果:林志明。VSTACK 先將一廠與二廠的資料上下合併,接著外層的 SORT 函數針對第二欄(日期)進行遞增排序。結果會從 F2 溢出顯示,第一筆為日期最早的「林志明」。
使用 VSTACK 的技巧與注意事項
- 合併跨工作表資料時,可以使用三維參照,例如 =VSTACK(工作表1:工作表3!A2:C10),能一次合併多張結構相同的工作表。
- 若合併的範圍包含空白儲存格,VSTACK 預設會將其轉換為 0。若要顯示空白,可搭配 IF 函數處理。
- 當合併的表格欄數不同時,缺少的欄位會顯示為 #N/A 錯誤值。
VSTACK 常見錯誤與解決方法
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
| #N/A | 合併的各個陣列欄數不一致,較短的陣列右側會補上錯誤值。 | 確認所有參照範圍的欄數相同,或搭配 IFNA 函數將錯誤值替換為空白。 |
| #SPILL! | 公式預期溢出的儲存格範圍內已經有其他資料。 | 清除阻擋公式溢出範圍內的資料,讓陣列有足夠空間顯示。 |
| #CALC! | 參照到空的陣列或不支援的動態陣列結構。 | 檢查參照範圍是否確實包含資料,確保公式內的陣列有效。 |
Google 試算表可以用 VSTACK 嗎?
Google 試算表支援 VSTACK 函數,用法與 Excel 完全相同,也能處理動態陣列的溢出效果。
下載 VSTACK 範例檔
上面的範例都整理在這個檔案裡,每個範例一個工作表,黃色格子是公式,可以直接改資料看結果變化:VSTACK 範例.xlsx(範例公式的結果經過兩個模型交叉核對)。
常見問題
VSTACK 可以合併不同工作表的資料嗎?
可以。只要在輸入公式時,依序選取不同工作表的範圍即可。如果工作表結構相同且名稱連續,還能使用三維參照一次合併多張工作表。
合併後的資料出現 #N/A 怎麼辦?
這是因為合併的多個陣列欄數不同,Excel 會在較短的陣列右側補上 #N/A。請確認選取範圍的欄數一致,或使用 IFNA 函數將其隱藏。
為什麼 VSTACK 合併空白儲存格會變成 0?
這是 Excel 陣列公式的預設行為。如果希望維持空白,可以在公式外層包裝 IF 函數,例如判斷結果為 0 時回傳空字串。
相關函數
這篇收錄在「Excel 函數字典」。




