在 Excel 中處理動態陣列、報表輸出或格式重建時,EXPAND 函數可將原始陣列「擴展」為指定的列數與欄數,並以空白或指定值填補不足部分。它是 Excel 365 的動態陣列函數之一,適合用於報表格式化、資料補齊與欄列結構控制。
🔹快速摘要(語法、用途、常見場景)
- 用途:將陣列擴展為指定大小,並填補空白或預設值
- 語法:
=EXPAND(陣列, 列數, 欄數, [填充值]) - 常見場景:報表格式化、欄列補齊、動態輸出、資料結構重建、陣列標準化
一、EXPAND 函數語法與用途
語法:
=EXPAND(array, rows, columns, [pad_with])
- array:原始陣列或範圍
- rows:擴展後的列數(整數)
- columns:擴展後的欄數(整數)
- pad_with(選填):填補空白的預設值,預設為空白
- 回傳結果為指定大小的動態陣列
=EXPAND(A1:B2,4,3,"-") 表示將 A1:B2 擴展為 4 列 3 欄,空白處填入 "-"。二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:擴展為 5 列 4 欄
=EXPAND(A1:B2,5,4)
空白處填入空白。
範例二:擴展並填入預設值
=EXPAND(A1:B2,4,3,"N/A")
範例三:只擴展列數,欄數維持原樣
=EXPAND(A1:B2,5,COLUMNS(A1:B2))
範例四:搭配 SEQUENCE 建立標準化陣列
=EXPAND(SEQUENCE(3,2),5,4,0)
範例五:處理動態 Spill 陣列
=EXPAND(B2#,6,5,"-")
將動態陣列 B2# 擴展為 6×5。
🔸進階範例
範例六:搭配 DROP 裁切後再擴展
=EXPAND(DROP(A1:D5,1),5,4,"")
範例七:搭配 IF 判斷是否需補齊
=IF(COUNTA(A1:A5)<5,EXPAND(A1:A5,5,1,"補齊"),A1:A5)
範例八:批次擴展多筆資料(Excel 365)
=MAP(A2:A10, LAMBDA(x, EXPAND(x,5,3,"-")))
範例九:建立動態報表區塊
=EXPAND(FILTER(A1:D10,A1:A10="有效"),10,4,"")
範例十:搭配 WRAPROWS 重組擴展後資料
=WRAPROWS(EXPAND(A1:A6,8,1,""),4)
三、常見問題解答(FAQ)
Q1:EXPAND 可以填入自訂值嗎?
可以,使用 pad_with 參數指定填充值。
Q2:EXPAND 可以處理動態陣列嗎?
可以,支援 Spill 陣列與函數組合。
Q3:EXPAND 會改變原始資料嗎?
不會,僅回傳新的動態陣列,不影響原資料。
Q4:EXPAND 可以只擴展列或欄嗎?
可以,只需指定其中一個維度,另一個可用 ROWS() 或 COLUMNS() 動態取得。
Q5:EXPAND 可以搭配哪些函數使用?
常見搭配 DROP、TAKE、SEQUENCE、WRAPROWS、MAP、LAMBDA 等。
四、注意事項與錯誤排除
- 若指定大小小於原陣列,資料會被裁切
- 若輸入非陣列或範圍,會回傳
#VALUE! - pad_with 可為文字、數值或空白,但不可為錯誤值
- 適用於報表格式化、欄列補齊與資料標準化
- 建議搭配錯誤防呆邏輯處理過度裁切或填值異常
五、延伸技巧與相關函數
若你需要進一步處理資料擴展與格式重建,可搭配以下函數:
你可以使用 TAKE 函數 擷取指定大小的資料區塊,與 EXPAND 相反,適合建立裁切邏輯。
若你需要裁切原始資料後再擴展,可搭配 DROP 函數,例如 EXPAND(DROP(...),...)。
若你想建立動態陣列結構,可搭配 SEQUENCE 函數,快速產生原始陣列供擴展使用。
若你需要將擴展後的資料重組為固定列數,可搭配 WRAPROWS 或 WRAPCOLS 函數。
若你需要批次處理多筆資料,可搭配 MAP 與 LAMBDA 函數,建立自訂擴展邏輯。
這些函數能與 EXPAND 組合成一套完整的「資料擴展 → 結構重建 → 報表輸出 → 批次處理」流程,適用於報表設計、資料清理與動態分析。
六、結語與延伸閱讀推薦
EXPAND 函數是 Excel 中專門處理資料擴展與欄列補齊的動態工具,適合用在報表格式化、欄位控制、資料重組與動態輸出等情境。學會 EXPAND 後,你可以進一步探索:
- [TAKE 函數教學]:擷取資料區塊的對應工具
- [DROP 函數教學]:裁切資料的彈性工具
- [WRAPROWS 函數教學]:重組陣列格式的排版利器











