Excel Max Row(最大列數)為 1,048,576 列,最大欄數為 16,384 欄(Excel 2007 以後版本)。 本文完整教學列數上限規格、超過上限的 4 種解決方案,以及用 MAX、ROW、MATCH、INDEX、MAXIFS 等函數找出最大值所在行列的 6 種公式組合,含實務案例與模擬資料表。
Excel 列數上限是多少?版本規格完整比較
搜尋「excel max row」最常見的問題就是:Excel 最多可以有幾列?答案取決於你使用的版本。
| Excel 版本 | 最大列數 | 最大欄數 | 檔案格式 |
|---|---|---|---|
| Excel 97-2003 | 65,536 列 | 256 欄 | .xls |
| Excel 2007 以後(含 365) | 1,048,576 列 | 16,384 欄 | .xlsx |
| Google Sheets | 10,000,000 格(非固定列數) | 18,278 欄 | 線上 |
為什麼是 1,048,576 這個數字?因為 Excel 的列數採用二進位設計:2^20 = 1,048,576,欄數則是 2^14 = 16,384。這不是隨意設定的上限,而是記憶體架構的直接反映。
除了列數與欄數,Excel 工作表數量上限也是常見疑問。理論上,一個活頁簿可以包含的工作表數量僅受限於可用記憶體,但實務上超過數十個工作表後,檔案開啟速度會明顯變慢。

超過 Excel 列數上限怎麼辦?
當你的資料量超過 1,048,576 列(也就是 Excel 超過 1048576 的情境),或者 Excel 資料量太大導致運算緩慢,以下四種方案可以解決問題:
方案一:拆分成多個工作表或檔案。 將資料依年份、區域或類別分割,每個工作表處理一個子集。這是最簡單的做法,但跨表查詢會變得複雜。
方案二:只匯入需要的資料子集。 使用 Power Query 的「篩選列」功能,在匯入階段就過濾掉不需要的資料,而非全部載入後再篩選。這能大幅降低記憶體佔用。
方案三:改用 Power Query 或 Power Pivot 處理大資料。 Power Query 可以處理遠超過百萬列的資料,因為它採用串流處理而非一次載入。Power Pivot 則能在記憶體中壓縮數百萬筆資料進行分析。
方案四:考慮資料庫工具或專案管理平台。 當資料量持續超過 50 萬列,且需要多人同時存取時,Excel 已經不是最佳選擇。SQL 資料庫適合純資料儲存與查詢;如果你的需求偏向專案追蹤與團隊協作,monday.com 能直接匯入 Excel 資料並自動建立視覺化儀表板,省去手動維護大型試算表的痛苦。
效能警示: 即使資料量未達上限,當工作表超過 50 萬列且包含大量公式時,Excel 的計算速度會顯著下降。如果你發現每次按 Enter 都要等好幾秒,就該考慮上述替代方案了。
MAX 函數基礎語法與 MAXIFS 條件最大值
掌握了 Excel 的列數規格後,接下來進入實務操作:如何用函數找出資料中的最大值。這是「excel 找最大值」「excel 取最大值」搜尋者最核心的需求。
MAX 函數語法
=MAX(number1, [number2], ...)
MAX 函數會從指定的數值範圍中回傳最大值。以下是三個最常見的使用情境:
範例一:單一範圍取最大值
| A | |
|---|---|
| 1 | 月銷售額 |
| 2 | 150,000 |
| 3 | 230,000 |
| 4 | 180,000 |
| 5 | 310,000 |
| 6 | 275,000 |
公式:=MAX(A2:A6) → 結果:310,000
範例二:多個不連續範圍
公式:=MAX(A2:A6, C2:C6) → 同時比較 A 欄和 C 欄,回傳兩欄中的最大值。
範例三:排除 0 的條件最大值(陣列公式)
公式:=MAX(IF(A2:A6>0, A2:A6))
在 Excel 365 或較新版本中,直接按 Enter 即可。舊版 Excel(2019 以前)需要按 Ctrl+Shift+Enter 輸入陣列公式,公式列會顯示大括號 {}。
想深入了解 MAX 函數的更多變化用法,可以參考 MAX 函數完整教學。
注意事項:
- 範圍內的文字、邏輯值(TRUE/FALSE)會被自動忽略
- 如果範圍內全部都是非數值資料,MAX 回傳 0
- 空白儲存格不影響結果
ROW 函數語法與應用情境
ROW 函數是後續公式中不可或缺的輔助函數,它的功能是回傳指定儲存格的「列號」(行號)。
=ROW([reference])
reference(選填):要查詢列號的儲存格或範圍。省略時回傳公式所在儲存格的列號。
基本範例:
=ROW(A5) → 結果:5(A5 位於第 5 列)
=ROW(C12) → 結果:12(C12 位於第 12 列)
=ROW() → 回傳公式所在儲存格的列號
ROW 函數的兩大應用情境:
① 搭配 MATCH 取得絕對行號: MATCH 函數回傳的是「範圍內的相對位置」,而非工作表上的絕對列號。例如在 B2:B10 範圍中找到第 3 個位置,實際上對應的是工作表的第 4 列。ROW 函數可以將相對位置轉換為絕對行號,公式邏輯為:
=ROW(範圍起始儲存格) + MATCH(搜尋值, 範圍, 0) - 1
② 自動產生序號: 在 A2 儲存格輸入 =ROW()-1,向下填充即可自動產生 1、2、3… 的序號,不受插入或刪除列的影響。
MAXIFS 條件最大值(Excel 2019/365)
MAXIFS 是許多人不知道但極為實用的函數,它能直接找出「符合條件的最大值」,不需要寫複雜的陣列公式。
=MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
範例:找出「業務部」的最高銷售額
| A | B | C | |
|---|---|---|---|
| 1 | 員工 | 部門 | 銷售額 |
| 2 | 王小明 | 業務部 | 450,000 |
| 3 | 李大華 | 行銷部 | 320,000 |
| 4 | 張美玲 | 業務部 | 580,000 |
| 5 | 陳志偉 | 業務部 | 390,000 |
| 6 | 林佳蓉 | 行銷部 | 410,000 |
公式:=MAXIFS(C2:C6, B2:B6, "業務部") → 結果:580,000
如果你使用的是舊版 Excel(不支援 MAXIFS),替代方案是陣列公式:
=MAX(IF(B2:B6="業務部", C2:C6)) (舊版需 Ctrl+Shift+Enter)
更多 Excel 函數的完整語法說明,可以參考我們的函數指南。

找出最大值所在的列(行號)
知道最大值是多少只是第一步,實務上更常需要知道「最大值在哪一列」——對應的是哪個任務、哪位員工、哪個月份。這需要 MAX 搭配 MATCH 和 INDEX 函數組合使用。
單欄資料——用 MATCH 找最大值所在行號
情境: 專案進度表中,A 欄是任務名稱,B 欄是進度百分比,需要找出進度最快的任務。
| A | B | |
|---|---|---|
| 1 | 任務名稱 | 進度 |
| 2 | 需求分析 | 85% |
| 3 | UI 設計 | 60% |
| 4 | 後端開發 | 92% |
| 5 | 測試驗收 | 45% |
| 6 | 文件撰寫 | 78% |
步驟一:找出最大值
=MAX(B2:B6)
結果:92%
步驟二:找出最大值在範圍內的相對位置
=MATCH(MAX(B2:B6), B2:B6, 0)
結果:3(表示在 B2:B6 範圍中的第 3 個位置)
MATCH 函數的第三個參數 0 代表精確比對。這裡回傳的是「相對位置」而非「絕對行號」——第 3 個位置指的是 B2:B6 中的第 3 格(B4),但 B4 在工作表上是第 4 列。
步驟二補充:取得工作表上的絕對行號
如果你需要的是工作表上的絕對列號(例如用於其他公式參照),需要用 ROW 函數轉換:
=ROW(B2) + MATCH(MAX(B2:B6), B2:B6, 0) - 1
結果:4(工作表的第 4 列)
公式邏輯拆解: ROW(B2) 回傳 2(範圍起始列號),MATCH 回傳 3(相對位置),2 + 3 – 1 = 4。之所以要 減 1,是因為 MATCH 回傳的相對位置已經「包含」了起始列本身——第 1 個位置就是起始列,所以直接相加會多算一列。
想深入了解 MATCH 的用法,可以參考 MATCH 函數教學。
步驟三:用 INDEX 取出對應的任務名稱
=INDEX(A2:A6, MATCH(MAX(B2:B6), B2:B6, 0))
結果:後端開發
這個 INDEX+MATCH 組合是 Excel 中最強大的查找公式之一。INDEX 根據 MATCH 回傳的位置編號,從 A 欄取出對應的值。更多組合技巧可以參考 INDEX MATCH 教學。
常見錯誤:MATCH 回傳 #N/A
如果公式回傳 #N/A,通常有三個原因:
1. 資料格式不一致: B 欄的數字實際上是文字格式(左對齊是線索),需要先轉換為數值。
2. 有隱藏的空白字元: 用 TRIM() 或 CLEAN() 清理資料。
3. 小數精度問題: 浮點數運算可能導致看起來相同的數字實際上有微小差異,可用 ROUND() 統一精度。

多欄資料——同時找最大值的列號與欄號
情境: 銷售表格中,需要找出哪個產品在哪個月的銷售額最高。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 產品 | 一月 | 二月 | 三月 |
| 2 | 產品A | 120 | 185 | 160 |
| 3 | 產品B | 210 | 175 | 195 |
| 4 | 產品C | 155 | 230 | 180 |
| 5 | 產品D | 190 | 165 | 245 |
找出整個表格的最大值:
=MAX(B2:D5)
結果:245
找出最大值所在的列號(行號):
=MIN(IF(B2:D5=MAX(B2:D5), ROW(B2:D5)))
結果:5(第 5 列,對應「產品D」)
找出最大值所在的欄號:
=MIN(IF(B2:D5=MAX(B2:D5), COLUMN(B2:D5)))
結果:4(第 4 欄,即 D 欄「三月」)
重要提醒: 在 Excel 365 中,以上兩個公式直接按 Enter 即可。在舊版 Excel 中,必須按 Ctrl+Shift+Enter 以陣列公式方式輸入,否則會得到錯誤結果。輸入成功後,公式列會顯示 {=MIN(IF(B2:D5=MAX(B2:D5), ROW(B2:D5)))}。
這裡使用 MIN() 包裹 IF() 的原因是:如果有多個儲存格都等於最大值,MIN 會回傳第一個出現的位置(最小的列號或欄號)。
INDEX/MATCH 雙向查找公式(適用於最大值唯一時):
如果你確定整個表格中最大值只出現一次,可以用更簡潔的 INDEX+MATCH 雙向查找,一次定位列與欄:
=INDEX(A1:D5, MATCH(MAX(B2:D5), A1:A5, 0), MATCH(MAX(B2:D5), A1:D1, 0))
這個公式的邏輯是:第一個 MATCH 在列方向找最大值所在的行,第二個 MATCH 在欄方向找最大值所在的欄,INDEX 再根據這兩個座標從整個表格中取值。注意:此公式僅適用於最大值唯一的情境,如果有重複最大值,MATCH 可能無法正確定位。
橫向資料——找最大值所在欄位名稱
情境: 成績單中,B1:F1 是科目名稱,B2:F2 是某位學生的各科分數,需要找出分數最高的科目。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | 學生 | 國文 | 英文 | 數學 | 自然 | 社會 |
| 2 | 王小明 | 82 | 91 | 76 | 88 | 79 |
公式:
=INDEX($B$1:$F$1, MATCH(MAX(B2:F2), B2:F2, 0))
結果:英文(91 分為最高)
這個公式的邏輯與單欄查找完全相同,只是方向從垂直變成水平:MATCH 在 B2:F2 中找到最大值的相對位置,INDEX 再從 B1:F1 的標題列中取出對應的科目名稱。

進階應用——多個最大值、第 N 大值與條件篩選
基礎的 MAX+MATCH+INDEX 組合能解決大部分需求,但實務中還會遇到更複雜的情境:重複的最大值、排名前三、或帶條件的篩選。
資料中有多個最大值時的處理方式
MATCH 函數有一個重要限制:它只會回傳第一個符合條件的位置。 如果資料中有兩個或以上的最大值,MATCH 只會找到第一個。
方法一:輔助欄標記所有最大值
在 C 欄加入公式:
=IF(B2=MAX($B$2:$B$10), "★ 最大值", "")
向下填充,所有等於最大值的列都會被標記。
方法二:條件格式同時標示所有最大值
這是更優雅的做法,不需要額外欄位:
- 選取資料範圍(例如 B2:B10)
- 點選「常用」→「條件格式」→「新增規則」
- 選擇「使用公式來決定要格式化哪些儲存格」
- 輸入公式:
=B2=MAX($B$2:$B$10) - 設定醒目的填滿色彩(例如黃色底色),按確定
這樣所有等於最大值的儲存格都會自動標示,而且當資料更新時,標示也會自動跟著變。
方法三:Google Sheets 用 ARRAYFORMULA 批次標註
如果你使用 Google Sheets,可以用一個公式同時標記整欄所有最大值,不需要逐列填充:
=ARRAYFORMULA(IF(A1:A10=MAX(A1:A10), "最大值", ""))
將此公式輸入到輔助欄的第一格,它會自動展開到整個範圍,在所有等於最大值的列旁邊顯示「最大值」標記。這是 Google Sheets 的 ARRAYFORMULA 函數特有的批次運算能力,Excel 365 的動態陣列也有類似效果。

找第 N 大值——LARGE 函數應用
除了最大值,「第二名是誰?前三名是哪些?」也是極常見的需求。這時候要用 LARGE 函數。
=LARGE(range, k)
range:數值範圍k:排名(1 = 最大值,2 = 第二大值,以此類推)
範例:找出銷售排行榜前三名
=LARGE(C2:C10, 1) → 第一名的銷售額
=LARGE(C2:C10, 2) → 第二名的銷售額
=LARGE(C2:C10, 3) → 第三名的銷售額
結合 MATCH 找出第二大值所在行:
=MATCH(LARGE(C2:C10, 2), C2:C10, 0)
結合 INDEX 取出第二名的姓名:
=INDEX(B2:B10, MATCH(LARGE(C2:C10, 2), C2:C10, 0))
注意:如果有兩個人的銷售額相同且都是第二大值,MATCH 同樣只會回傳第一個。處理方式與前一節相同。
條件最大值——MAXIFS 實戰範例
前面介紹過 MAXIFS 的基礎語法,這裡用一個更貼近實務的範例:
情境:找出「北區」業務員中的最高業績
| A | B | C | |
|---|---|---|---|
| 1 | 業務員 | 區域 | 業績 |
| 2 | 王大明 | 北區 | 520,000 |
| 3 | 李小華 | 南區 | 480,000 |
| 4 | 張志豪 | 北區 | 610,000 |
| 5 | 陳美玲 | 中區 | 390,000 |
| 6 | 林建宏 | 北區 | 550,000 |
| 7 | 黃雅婷 | 南區 | 670,000 |
Excel 2019/365:
=MAXIFS(C2:C7, B2:B7, "北區")
結果:610,000(張志豪)
舊版 Excel 替代方案(陣列公式):
=MAX(IF(B2:B7="北區", C2:C7))
(舊版需 Ctrl+Shift+Enter)
進一步找出北區業績冠軍的姓名:
=INDEX(A2:A7, MATCH(MAXIFS(C2:C7, B2:B7, "北區"), IF(B2:B7="北區", C2:C7), 0))
(此為陣列公式,舊版需 Ctrl+Shift+Enter)
如果你還在使用 VLOOKUP 做類似的查找,建議了解一下 VLOOKUP 的完整用法,以及何時該改用 INDEX+MATCH 組合。

實務案例——專案管理與銷售場景完整示範
以下兩個案例提供完整的模擬資料和公式,你可以直接複製到 Excel 中練習。
案例一:專案進度表找出進度最快的任務
模擬資料:
| A | B | C | |
|---|---|---|---|
| 1 | 任務名稱 | 負責人 | 進度% |
| 2 | 市場調研 | 王小明 | 75 |
| 3 | 競品分析 | 李大華 | 88 |
| 4 | 產品規格書 | 張美玲 | 62 |
| 5 | UI/UX 設計 | 陳志偉 | 95 |
| 6 | 前端開發 | 林佳蓉 | 70 |
| 7 | 後端開發 | 黃建宏 | 55 |
| 8 | 整合測試 | 周雅婷 | 40 |
| 9 | 使用者驗收 | 吳明哲 | 20 |
公式與結果:
- 最高進度:
=MAX(C2:C9)→ 95 - 最高進度的位置:
=MATCH(MAX(C2:C9), C2:C9, 0)→ 4(範圍內第 4 個) - 進度最快的任務:
=INDEX(A2:A9, MATCH(MAX(C2:C9), C2:C9, 0))→ UI/UX 設計 - 該任務的負責人:
=INDEX(B2:B9, MATCH(MAX(C2:C9), C2:C9, 0))→ 陳志偉
從 Excel 到自動化追蹤的升級路徑
用 Excel 管理單一專案的進度沒問題,但當你同時管理 3 個以上的專案、且需要多人即時更新進度時,Excel 的限制就會浮現:版本衝突、公式被誤刪、沒有自動提醒機制。
如果從 Excel 轉到 monday.com 追蹤專案進度,最明顯的差別是自動化規則:例如設定「任務進度低於 50% 且距離截止日不到 3 天時,自動通知負責人和主管」,延遲就不用等到週會才發現。免費方案不需要信用卡,2 個人以內可以直接開始用。
如果你想了解更多專案管理的方法論與工具選擇,可以參考我們的完整指南。

案例二:銷售排行榜找出業績冠軍與前三名
模擬資料:
| A | B | C | |
|---|---|---|---|
| 1 | 銷售員 | 區域 | 銷售額 |
| 2 | 王大明 | 北區 | 520,000 |
| 3 | 李小華 | 南區 | 480,000 |
| 4 | 張志豪 | 北區 | 710,000 |
| 5 | 陳美玲 | 中區 | 390,000 |
| 6 | 林建宏 | 南區 | 650,000 |
| 7 | 黃雅婷 | 北區 | 580,000 |
| 8 | 周明哲 | 中區 | 430,000 |
| 9 | 吳佳蓉 | 南區 | 710,000 |
| 10 | 劉志偉 | 北區 | 560,000 |
| 11 | 許美華 | 中區 | 620,000 |
找出業績冠軍:
=INDEX(A2:A11, MATCH(MAX(C2:C11), C2:C11, 0))
結果:張志豪(710,000)
注意:吳佳蓉也是 710,000,但 MATCH 回傳第一個。
找出前三名的銷售額與姓名:
| 排名 | 公式(銷售額) | 公式(姓名) |
|---|---|---|
| 第 1 名 | =LARGE(C2:C11, 1) → 710,000 |
=INDEX(A2:A11, MATCH(LARGE(C2:C11,1), C2:C11, 0)) → 張志豪 |
| 第 2 名 | =LARGE(C2:C11, 2) → 710,000 |
=INDEX(A2:A11, MATCH(LARGE(C2:C11,2), C2:C11, 0)) → 張志豪 ⚠️ |
| 第 3 名 | =LARGE(C2:C11, 3) → 650,000 |
=INDEX(A2:A11, MATCH(LARGE(C2:C11,3), C2:C11, 0)) → 林建宏 |
⚠️ 第 2 名出現問題:因為有兩個 710,000,LARGE 回傳的第 2 大值仍是 710,000,而 MATCH 又找到同一個人。解決方法是使用 COUNTIF 輔助欄去重,或改用排序後的表格。
各區域業績冠軍(MAXIFS 應用):
北區冠軍:=MAXIFS(C2:C11, B2:B11, "北區") → 710,000
南區冠軍:=MAXIFS(C2:C11, B2:B11, "南區") → 710,000
中區冠軍:=MAXIFS(C2:C11, B2:B11, "中區") → 620,000
當銷售團隊超過 20 人,且需要每週自動產出排行榜時,手動維護 Excel 公式會變得很吃力。ClickUp 的儀表板功能可以自動從 CRM 資料計算排名,並即時更新——不需要每次都重新跑公式。

結論
本文涵蓋了「excel max row」搜尋意圖的兩大核心主題,以下是重點回顧:
- Excel 列數上限為 1,048,576 列、16,384 欄(Excel 2007 以後),這是 2^20 與 2^14 的二進位設計結果
- 超過上限時,優先考慮 Power Query 處理大資料,或將資料拆分成多個工作表
- MAX 找最大值 + MATCH 定位 + INDEX 取值是最核心的三步驟公式組合
- ROW 函數可將 MATCH 的相對位置轉換為絕對行號,公式為
=ROW(起始格) + MATCH(...) - 1 - MAXIFS 可直接找條件最大值(Excel 2019/365),舊版用 MAX+IF 陣列公式替代
- LARGE 函數找第 N 大值,搭配 MATCH+INDEX 可建立完整排行榜
建議學習路徑: MAX → ROW → MAXIFS → INDEX/MATCH → LARGE → XLOOKUP。掌握這條路線,你的 Excel 資料分析能力會有質的提升。其中 XLOOKUP 僅支援 Excel 2021 及 Microsoft 365,舊版 Excel 無法使用,需改用 INDEX+MATCH 替代。可以從 Excel 函數完整指南開始系統學習。
下一步行動: 打開你手邊的 Excel 檔案,用 =INDEX(A2:A100, MATCH(MAX(B2:B100), B2:B100, 0)) 試試看——30 秒就能找出你的資料中最大值對應的名稱。如果你發現 Excel 已經無法滿足團隊協作與自動化追蹤的需求,可以試試 monday.com 的免費方案,直接匯入 Excel 資料就能建立自動化儀表板。
Excel Max Row 常見問題 FAQ
Excel 最多可以有幾列?
Excel 2007 以後的版本(包含 Excel 2010、2013、2016、2019、365)最大列數為 1,048,576 列,最大欄數為 16,384 欄。舊版 Excel 2003 最多只有 65,536 列。如果你的 .xls 檔案只能存 65,536 列,將檔案另存為 .xlsx 格式即可突破限制。
如何找出最大值所在的列與欄?
使用 MAX + MATCH + INDEX 三個函數組合。先用 =MAX(範圍) 找出最大值,再用 =MATCH(MAX(範圍), 範圍, 0) 找出位置,最後用 =INDEX(名稱範圍, MATCH結果) 取出對應名稱。如果需要工作表上的絕對行號,用 =ROW(範圍起始格) + MATCH(MAX(範圍), 範圍, 0) - 1。多欄資料則用 =MIN(IF(範圍=MAX(範圍), ROW(範圍))) 陣列公式找列號。
MATCH 找不到最大值怎麼辦?
MATCH 回傳 #N/A 通常有三個原因:① 資料格式不一致——數字欄位中混入了文字格式的數字,用「資料」→「資料剖析」重新轉換格式;② 隱藏空白字元——用 =TRIM(儲存格) 清除前後空白;③ 浮點數精度問題——用 =ROUND(儲存格, 2) 統一小數位數後再比對。
Excel 資料量太大跑很慢怎麼辦?
四個優化建議:① 減少揮發性函數(如 INDIRECT、OFFSET),改用 INDEX;② 將公式結果轉為值——選取公式範圍,複製後「選擇性貼上」→「值」;③ 關閉自動計算——公式 → 計算選項 → 手動,需要時按 F9 重新計算;④ 使用 Power Query——將大量資料的處理移到 Power Query,避免在工作表中放置大量公式。
Google Sheets 的 MAX 函數用法與 Excel 有何不同?
基本語法完全相同:=MAX(A1:A10)。主要差異有三點:① 陣列公式處理方式——Google Sheets 原生支援動態陣列,不需要 Ctrl+Shift+Enter,且可以用 ARRAYFORMULA() 批次運算,例如 =ARRAYFORMULA(IF(A1:A10=MAX(A1:A10), "最大值", "")) 可以一次標記整欄所有最大值。② 儲存格上限不同——Google Sheets 的上限是 10,000,000 格(而非固定列數),單一工作表實際效能限制約 200 欄 × 50,000 列,比 Excel 更低。③ XLOOKUP 支援度——Google Sheets 已支援 XLOOKUP,但舊版 Excel(2019 以前)不支援,需改用 INDEX+MATCH 替代。