在 Excel 中,TAKE 函數能從陣列或範圍中擷取指定的列數或欄數,並回傳新的陣列。它是 Excel 365 的動態陣列函數之一,適合用於 報表裁切、資料重組、動態輸出 等情境,常與 DROP、EXPAND、SEQUENCE 搭配使用。
🔹快速摘要(語法、用途、常見場景)
用途:擷取陣列的前/後幾列或幾欄
語法:=TAKE(array, rows, [columns])常見場景:報表裁切、動態輸出、資料重組、搭配 DROP/EXPAND、建立標準化陣列
一、TAKE 函數語法與用途
=TAKE(array, rows, [columns])
- array:原始陣列或範圍
- rows:要擷取的列數(正數=前幾列,負數=後幾列)
- columns(選填):要擷取的欄數(正數=前幾欄,負數=後幾欄)
回傳結果為指定大小的動態陣列。
例如:
=TAKE(A1:D10,3,2)
表示擷取 A1:D10 的前 3 列、前 2 欄。
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:擷取前 5 列
=TAKE(A1:D10,5)
說明:回傳 A1:D10 的前 5 列。
範例二:擷取後 3 列
=TAKE(A1:D10,-3)
說明:回傳 A1:D10 的最後 3 列。
範例三:擷取前 2 欄
=TAKE(A1:D10,10,2)
說明:回傳前 10 列、前 2 欄。
範例四:擷取最後 2 欄
=TAKE(A1:D10,10,-2)
說明:回傳前 10 列、最後 2 欄。
範例五:擷取單列單欄
=TAKE(A1:D10,1,1)
說明:回傳第一列第一欄。
🔸進階範例
範例六:搭配 DROP 建立裁切邏輯
=TAKE(DROP(A1:D10,2),5)
說明:先去除前 2 列,再擷取 5 列。
範例七:搭配 EXPAND 擴展後再裁切
=TAKE(EXPAND(A1:B2,6,4,"-"),4,3)
說明:先擴展為 6×4,再擷取前 4 列、前 3 欄。
範例八:搭配 SEQUENCE 建立標準化陣列
=TAKE(SEQUENCE(10,5),5,3)
說明:建立 10×5 序列,再擷取前 5 列、前 3 欄。
範例九:搭配 FILTER 篩選後裁切
=TAKE(FILTER(A1:D10,B1:B10="有效"),3)
說明:篩選「有效」資料後,擷取前 3 列。
範例十:建立動態報表區塊
=TAKE(A1:D100,ROWS(B2:B10),3)
說明:依 B 欄資料筆數決定列數,並擷取前 3 欄。
三、常見問題解答(FAQ)
Q1:TAKE 可以擷取最後幾列或幾欄嗎?
可以,使用負數即可,例如 TAKE(A1:D10,-2)。
Q2:TAKE 會改變原始資料嗎?
不會,它只回傳新的陣列,原始資料保持不變。
Q3:TAKE 可以搭配其他動態陣列函數嗎?
可以,常與 DROP、EXPAND、SEQUENCE、FILTER 搭配。
Q4:TAKE 可以用於橫向資料嗎?
可以,透過 columns 參數控制欄數。
Q5:TAKE 是否支援舊版 Excel?
不支援,僅 Excel 365 可用。
四、注意事項與錯誤排除
- 若 rows 或 columns 超出範圍,會回傳錯誤。
- rows 與 columns 必須為整數,否則會回傳錯誤。
- TAKE 回傳的是動態陣列,需確保輸出範圍有足夠空間。
- 若 array 為空,會回傳空陣列。
- 在舊版 Excel 不支援 TAKE,僅 Excel 365 可用。
五、延伸技巧與相關函數
- DROP:與 TAKE 相反,用於去除指定列或欄。
- EXPAND:搭配 TAKE 擴展後裁切,建立標準化陣列。
- SEQUENCE:建立動態序列,搭配 TAKE 控制輸出大小。
- FILTER:篩選後再用 TAKE 擷取指定列數。
- INDEX:搭配 TAKE 精準取值,建立動態查表。
六、結語與延伸閱讀推薦
TAKE 是 Excel 中的裁切工具,能快速擷取指定大小的資料區塊,適合用於報表設計、資料重組與動態分析。若搭配 DROP、EXPAND、SEQUENCE 等函數,能建立完整的「裁切 → 擴展 → 重組 → 輸出」流程。














