在 Excel 中,ROWS 函數能回傳某個範圍中包含的列數,無論該範圍從哪一列開始。它與 ROW 函數不同,ROW 回傳列號,而 ROWS 回傳「列數」。這使得 ROWS 成為建立動態公式、控制資料長度、或搭配其他函數進行資料擴展與結構重建的重要工具。
🔹快速摘要(語法、用途、常見場景)
用途:回傳指定範圍中包含的列數
語法:=ROWS(array)常見場景:動態列數控制、報表格式化、搭配 OFFSET/INDEX、建立動態序列、資料擴展
一、ROWS 函數語法與用途
=ROWS(array)
- array:任意儲存格範圍(可為單欄、多欄、多列)
- 回傳結果為整數,表示該範圍的列數
例如:
=ROWS(A1:A5) → 5
=ROWS(B2:D10) → 9
=ROWS(A1) → 1
二、範例教學:五個基礎 + 五個進階範例
🔸基礎範例
範例一:計算單欄範圍的列數
=ROWS(A1:A10)
說明:回傳 10,表示 A1:A10 有 10 列。
範例二:計算多欄範圍的列數
=ROWS(B2:D6)
說明:回傳 5,因為該範圍橫跨 5 列。
範例三:單一儲存格也可使用
=ROWS(C3)
說明:回傳 1,因為只有一列。
範例四:搭配 INDEX 動態取值
=INDEX(A1:A100,ROWS(A$1:A1))
說明:可用於動態列遞增的公式中。
範例五:搭配 INDIRECT 建立動態範圍
=ROWS(INDIRECT("A1:A"&B1))
說明:根據 B1 的數值決定列數。
🔸進階範例
範例六:搭配 OFFSET 建立動態加總範圍
=SUM(OFFSET(A1,0,0,ROWS(B1:B10),1))
說明:根據 B 欄資料筆數,自動調整加總列數。
範例七:建立動態序列(Excel 365)
=SEQUENCE(ROWS(A2:A10),1,1,1)
說明:產生與 A2:A10 相同列數的序列。
範例八:搭配 EXPAND 擴展資料列數
=EXPAND(A1:B3,ROWS(A1:A10),2,"-")
說明:將原始資料擴展為 10 列。
範例九:搭配 FILTER 控制輸出列數
=FILTER(A2:A100,ROW(A2:A100)<=ROWS(B2:B10))
說明:根據 B 欄資料筆數,限制輸出列數。
範例十:搭配 LAMBDA 批次處理列資料
=MAP(SEQUENCE(ROWS(A2:A10)),LAMBDA(r,INDEX(A2:A10,r)))
說明:依列數逐筆處理資料。
三、常見問題解答(FAQ)
Q1:ROWS 與 ROW 有何不同?
ROWS 回傳「列數」,ROW 回傳「列號」,兩者用途不同。
Q2:ROWS 可以處理多欄範圍嗎?
可以,會忽略欄數,只回傳列數。
Q3:ROWS 可以搭配動態範圍嗎?
可以,常與 INDIRECT、OFFSET 搭配使用。
Q4:ROWS 可以用於陣列公式嗎?
可以,尤其在 Excel 365 中支援 Spill 陣列。
Q5:ROWS 是否支援空白儲存格?
支援,無論儲存格是否有值,都會計入列數。
四、注意事項與錯誤排除
- ROWS 回傳的是「範圍的列數」,與資料是否有值無關。
- 若輸入非範圍(如文字),會回傳錯誤。
- 若搭配 INDIRECT,需確保字串能正確轉為範圍。
- 在舊版 Excel 中使用 ROWS 搭配 Spill 陣列需 Ctrl+Shift+Enter。
- 若範圍為橫向(如 A1:D1),ROWS 仍回傳 1。
五、延伸技巧與相關函數
- ROW:回傳列號,與 ROWS 搭配可建立動態定位。
- COLUMNS:回傳欄數,與 ROWS 搭配可建立矩陣控制。
- SEQUENCE:建立動態列數序列,ROWS 可作為輸入參數。
- OFFSET:搭配 ROWS 控制範圍高度。
- EXPAND:搭配 ROWS 擴展資料列數,建立標準化報表。
六、結語與延伸閱讀推薦
ROWS 是 Excel 中最簡單卻實用的函數之一,能回傳範圍的列數,並支援動態公式與陣列運算。它在報表設計、資料擴展、動態定位與結構控制中扮演重要角色,建議與 ROW、SEQUENCE、OFFSET 等函數搭配使用,建立更具彈性的報表邏輯。











