Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

在 Excel 當中,如果我們想要取出固定行列的資料時,該使用哪個函數來自動抓取呢?今天就要教大家利用 OFFSET 這個函數,幫助你取出 Excel 當中指定間隔的資料。
在 Excel 裡處理資料時,你一定遇過這種需求:資料清單很長,但你只需要抓出其中特定間隔的項目。好比一整年的月報表,你只想看每季的最後一個月;或是學生名單裡,你只要抽出奇數編號的同學。這類情境如果靠手動複製貼上,不只浪費時間,還很容易出錯。
OFFSET 函數就是專門為了這種「動態取值」需求而設計的工具。它不像一般的儲存格參照(例如 A1 或 B5:D10)那樣固定不動,而是可以根據你設定的條件,自動計算出目標儲存格的位置。簡單來說,你告訴 OFFSET 一個起點、要往哪個方向走幾步,它就幫你把那個位置的值帶回來。
這個函數的威力不僅止於單一儲存格的取值。當你搭配其他函數一起使用時,OFFSET 能夠做到動態範圍命名、自動擴展的下拉選單、移動平均計算,甚至是讓圖表的資料來源隨著新增資料自動更新。如果你經常需要處理結構化的資料表,OFFSET 絕對是值得深入學習的一個函數。
OFFSET 屬於 Excel 的「查閱與參照」類函數,跟 Microsoft Office 家族中大家熟悉的 VLOOKUP、INDEX、MATCH 歸在同一類。不過它的定位更偏向「定位」而非「搜尋」,也就是說,你不需要告訴它要找什麼值,只需要告訴它「從哪裡出發、走幾步」。
這篇文章會從 OFFSET 的基本語法開始講起,逐步帶你理解每個參數的作用,然後透過多個實務範例,示範它在不同場景下的應用方式。不論你是剛接觸 Excel 的新手,還是已經會用 ChatDOC 處理 PDF 文件的進階使用者,都能從中找到可以直接套用的公式技巧。如果你平常也會用 ChatPDF 來整理資料,那麼學好 OFFSET 函數更能幫你把資料處理流程完全自動化。
目錄
OFFSET 的完整語法如下:
=OFFSET(reference, rows, cols, [height], [width])
這五個參數看似複雜,其實邏輯很直觀。下面逐一拆解每個參數的意義與使用方式。
這是你設定的「起點」。可以是一個儲存格(例如 A1),也可以是一個連續範圍(例如 A1:C10)。OFFSET 會以這個起點為基準,開始計算偏移量。要注意的是,Reference 必須指向一個實際存在的儲存格或範圍,如果傳入的不是有效參照,Excel 會回傳 #VALUE! 錯誤。
告訴 OFFSET 要從起點往下或往上移動幾列。正數代表往下,負數代表往上,0表示不偏移。舉例來說,如果 Reference 是 A1、Rows 是 5,那結果就是 A6(從 A1 往下 5 列)。這在處理縱向資料時非常實用,像是在一份由 CleverPDF 轉出來的報表中,你可能需要跳過標題列,直接從資料區開始取值。
控制水平方向的偏移。正數往右,負數往左,0不動。如果 Reference 是 A1、Cols 是 3,結果就是 D1(從 A 欄往右移 3 欄到 D 欄)。當你的資料欄位很多時,這個參數可以幫你精準定位到目標欄位,不用管中間經過了哪些欄。
這兩個參數決定了 OFFSET 回傳的是「單一儲存格」還是「一個範圍」。如果省略,Excel 會自動採用 Reference 的大小。如果你指定了 Height 為 5、Width 為 3,OFFSET 就會回傳一個 5 列乘以 3 欄的範圍。這在需要動態範圍的場景中特別重要,例如搭配 SUM 或 AVERAGE 計算變動區間的統計值。
需要特別注意的是,Height 和 Width 都必須是正整數。如果你給了負數或 0,Excel 會回傳錯誤。如果你想要檢查公式中每個部分的計算結果,可以參考我們之前介紹過的 Diff Checker Text,用來比對修改前後的公式差異。如果你手邊有大量 PDF 格式的資料表需要轉換成 Excel,EasyPDF 是一個不錯的免費工具。
在深入了解進階用法之前,先從最基本的單一儲存格取值開始。這是最直覺、也最容易理解 OFFSET 運作邏輯的方式。
假設你的資料表從 A1 開始,你想取得從 A1 往下 2 列、往右 3 欄的儲存格內容。公式寫法:
=OFFSET(A1, 2, 3)
這個公式的意思是:以 A1 為起點,往下走 2 列(到第 3 列),往右走 3 欄(到第 4 欄,也就是 D 欄),所以結果等同於直接參照 D3。
你可能會問:既然結果一樣,為什麼不直接寫 D3?差別在於,當你用 OFFSET 時,偏移量可以是動態的。你可以把 2 和 3 替換成其他儲存格的值,甚至是其他函數的計算結果。這就是 OFFSET 的核心價值。
OFFSET 也支援往回找資料。例如:
=OFFSET(D5, -2, -1)
以 D5 為起點,往上 2 列到第 3 列,往左 1 欄到 C 欄,所以結果等同於 C3。負數偏移在某些特殊場景中很好用,例如你已經知道資料的終點位置,但需要往回推算某個相對位置的值。
當 Rows 和 Cols 都設為 0 時,OFFSET 會回傳 Reference 本身的值。雖然看起來沒什麼用,但這在需要動態切換資料來源的場景中很常見。例如你可以透過一個控制儲存格來決定 Reference 指向哪個工作表的哪個範圍。
如果你的工作內容涉及大量文件處理,像 PDNob 圖片轉文字 這類工具可以幫你快速把截圖或 PDF 中的資料轉成文字格式,再貼進 Excel 做後續計算。而在做報告時,Slidesgo 提供了大量精美的簡報範本可以免費下載。如果你擔心試算表的安全,也可以用 LastPass 密碼產生器 來建立強密碼保護你的雲端檔案。
這大概是 OFFSET 最經典的應用場景了。原始文章也提到了這個技巧,但我們要在這裡做更完整的說明,讓你徹底理解公式背後的邏輯。
假設你有一份學生名單,編號和姓名交替排列在同一欄裡,長得像這樣:
| 儲存格 | 內容 |
|---|---|
| A2 | 1(編號) |
| A3 | 王小明(姓名) |
| A4 | 2(編號) |
| A5 | 李小華(姓名) |
| A6 | 3(編號) |
| A7 | 張大偉(姓名) |
你想要把「編號」單獨抽出來放到 D 欄,「姓名」放到 E 欄。在 D2 輸入以下公式:
=OFFSET(A$2, (ROW(A1)-1)*2, 0)
當你把公式下拉到 D3 時:
同樣的邏輯,在 E2 輸入 =OFFSET(B$2, (ROW(B1)-1)*2, 0),就可以把姓名欄也拆出來。剩下的只要把公式往下拉就好,不管資料有幾百列,全部自動搞定。
理解了基本原理之後,調整間隔就非常簡單。公式中 *2 的「2」就是間隔數。你想要每隔 3 列取一次值?把 2 改成 3。每隔 4 列?改成 4。就這麼直覺。
更好的做法是把間隔數放在一個獨立的儲存格裡(例如 G1),然後公式改成:
=OFFSET(A$2, (ROW(A1)-1)*$G$1, 0)
這樣你只需要修改 G1 的值,所有公式的取值間隔就會同步更新。在做資料篩選或報表分析的時候,這種彈性設計可以省下大量重複修改公式的時間。
如果你常常需要把不同格式的文件轉成 Excel 來做這類資料處理,PDNob PDF Online 可以幫你把 PDF 轉成可編輯的格式。處理完的報表如果需要分享給同事,Speedpdf 提供了快速的檔案格式轉換功能。而 AvePDF 則可以幫你把 Excel 轉成 PDF 方便列印,或是反過來把 PDF 轉回 Excel 做進一步編輯。善用 AnyConv 的免費轉檔功能,還能把匯出的資料快速轉換成各種格式方便分享。
OFFSET 的 Height 和 Width 參數讓它能夠回傳一個範圍,而不只是單一儲存格。當你把這個動態範圍交給 SUM 或 AVERAGE 處理,就能做到「資料新增多少,計算範圍就自動擴展多少」的效果。
公式如下:
=SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))
拆解這個公式:
這樣不管你在 A 欄新增了多少筆資料,SUM 的計算範圍都會自動包含所有非空的儲存格。在做月報或季報的時候特別好用,因為你再也不需要每個月手動去修改 SUM 的範圍。
移動平均是財務分析和品質管理中常用的指標。用 OFFSET 來實作非常優雅:
=AVERAGE(OFFSET(A1, COUNTA(A:A)-5, 0, 5, 1))
這個公式會從 A 欄的最後一筆資料往上數 5 筆,計算這 5 筆的平均值。當你新增第 6 筆資料時,計算範圍會自動變成第 2 到第 6 筆,永遠保持「最近 5 筆」的邏輯。把 5 改成任何你需要的數字,就能彈性調整移動平均的期數。
在處理大量數值資料時,如果你需要提升圖片的品質來做更清楚的圖表說明,可以試試 AI Image Enhancer。而 ShortPixel 和 Imagify 則可以幫你壓縮試算表中嵌入的圖片,減少檔案大小。如果你需要壓縮的是獨立的圖片檔案,Compressor.io 也是一個方便的免費工具。
VLOOKUP 是大家最熟悉的查詢函數,但它有一個致命的限制:只能向右查。如果你的目標值在查詢欄的左邊,VLOOKUP 就無能為力了。這時候 OFFSET 搭配 MATCH 就能派上用場。
MATCH 函數的功能是「在範圍中找到目標值,回傳它的相對位置」。例如 =MATCH("王小明", B:B, 0) 會告訴你「王小明」在 B 欄中是第幾個(精確比對模式)。
把 MATCH 的結果交給 OFFSET 當作偏移量,就能精準定位到目標資料列。公式範例:
=OFFSET(A1, MATCH(“王小明”, B:B, 0)-1, 3)
真正厲害的是,你可以把 Cols 設為負數來向左查詢。這是 VLOOKUP 做不到的:
=OFFSET(D1, MATCH(“王小明”, C:C, 0)-1, -2)
這個公式會在 C 欄找到「王小明」,然後從 D 欄往左偏移 2 欄(到 A 欄),取得對應的編號。在設計資料表結構時,你不必再為了遷就 VLOOKUP 而把查詢欄硬放在最左邊。
如果你需要合法取得 Office 軟體來練習這些公式,可以參考我們之前整理的 Gofunco 非法序號警告,了解哪些購買管道是不安全的。而 Windows 與 Office 序號分析 則提供了完整的正版購買建議。便宜的 Office 序號能不能買 這篇文章也值得一看,幫你避開常見的陷阱。
很多 Excel 使用者在學會 OFFSET 之後,會發現 INDEX 函數似乎也能做類似的事情。那到底什麼時候該用 OFFSET,什麼時候該用 INDEX?這段就來把兩者的差異說清楚。
=INDEX(array, row_num, [col_num])
INDEX 的邏輯是「在指定的範圍裡面,取出第幾列第幾欄的值」。它直接告訴你結果是什麼,不需要經過偏移計算。例如 =INDEX(A1:D10, 3, 4) 就是取出 A1:D10 範圍中第 3 列第 4 欄的值,等同於 D3。
OFFSET 最大的優勢在於 Height 和 Width 參數。它能回傳一個動態大小的範圍,這是 INDEX 做不到的。當你需要把一段可變大小的範圍交給 SUM、AVERAGE 或圖表使用時,OFFSET 是唯一的選擇。
這是很多進階使用者會關心的重點。OFFSET 屬於 volatile 函數(易變函數),意思是只要試算表中有任何儲存格的值被修改,Excel 就會重新計算所有包含 OFFSET 的公式,即使修改的內容跟 OFFSET 的參考範圍毫無關係。
在小型試算表中,這個影響幾乎感覺不到。但如果你在一個有幾萬列資料、幾百個公式的大型檔案裡大量使用 OFFSET,每次修改任何儲存格都會觸發全部公式重新計算,明顯拖慢整體效能。
INDEX 不屬於 volatile 函數,只有在它參考的範圍實際發生變化時才會重新計算。所以如果你的需求只是「定位取值」,不需要動態範圍,那 INDEX+MATCH 的組合在效能上是更好的選擇。
| 需求場景 | 推薦函數 | 原因 |
|---|---|---|
| 需要動態範圍(height/width) | OFFSET | INDEX 無法回傳變動大小的範圍 |
| 單純定位取值 | INDEX+MATCH | 效能較好,非 volatile |
| 搭配 SUM/AVERAGE 計算動態區間 | OFFSET | 需要動態範圍參數 |
| 大型試算表(效能敏感) | INDEX+MATCH | 避免 volatile 函數拖慢速度 |
想進一步提升 Excel 技巧的話,可以看看 Udemy 免費課程懶人包,裡面有不少優質的試算表課程。Education.com 也提供了許多學習資源。如果你對 AI 輔助學習有興趣,ChatGPT 可以幫你解釋任何看不懂的公式邏輯,讓學習效率大幅提升。
使用 OFFSET 時,遇到錯誤訊息是正常的,尤其是剛開始學的時候。以下整理了最常見的幾種錯誤,以及對應的解決方法。
這是 OFFSET 最常見的錯誤。當偏移後的位置跑到了工作表的範圍之外(例如往左偏移超過了 A 欄,或往上偏移超過了第 1 列),Excel 就會回傳 #REF!。
解決方法很直接:檢查你的偏移量。如果 Rows 是負數,確保 Reference 的列號 + Rows ≥ 1。如果 Cols 是負數,確保 Reference 的欄號 + Cols ≥ 1。一個實用的除錯習慣是,先把 OFFSET 拆開來看:把 rows 和 cols 的值單獨放在儲存格裡,確認計算結果符合預期,再組回公式中。
當 Reference 參數指向的不是有效的儲存格或範圍時,就會出現這個錯誤。常見原因包括:Reference 引用了已被刪除的範圍、Reference 是一個常數而非儲存格參照、或者 Reference 引用了另一個出錯的公式結果。
OFFSET 的 Height 和 Width 參數必須是正整數。如果你用其他函數的計算結果作為這兩個參數,有可能在邊界條件下產生 0 或負數,導致公式報錯。一個簡單的防範做法是用 MAX 函數確保最小值為 1:
=OFFSET(A1, 0, 0, MAX(1, COUNTA(A:A)), 1)
Excel 內建了一個很好用的除錯工具。在公式標籤頁裡點選「評估值公式」,Excel 會一步一步展示公式的計算過程,讓你清楚看到每個部分在哪裡出了問題。特別是在公式很長、巢狀層級很多的時候,這個功能可以省下大量找錯的時間。
如果你不想讓錯誤值顯示在正式的報表中,可以用 IFERROR 把 OFFSET 包起來:
=IFERROR(OFFSET(A$2, (ROW(A1)-1)*2, 0), “”)
這樣當 OFFSET 計算出錯時,儲存格會顯示空白,而不是嚇人的錯誤代碼。不過要注意,IFERROR 會把所有類型的錯誤都隱藏起來,建議在確認公式邏輯正確之後再使用。
如果你在搭建公司內部系統需要用到虛擬主機,可以參考 Bluehost 主機評價,它是 WordPress 官方推薦的主機服務之一。Kinsta 則主打高效能的 WordPress 代管服務,適合流量較大的網站。如果你在尋找更多選擇,SiteGround 也是一個評價不錯的選項。完整的比較可以看我們整理的 WordPress 虛擬主機推薦懶人包。
如果你同時使用 Excel 和 Google Sheets,好消息是:OFFSET 函數在 Google Sheets 中完全支援,語法也一模一樣。你在 Excel 中寫的 OFFSET 公式,貼到 Google Sheets 中可以直接使用,不需要做任何修改。
前面提到 OFFSET 在 Excel 中屬於 volatile 函數,會在每次試算表變動時重新計算。在 Google Sheets 中,這個特性的影響相對沒那麼明顯,因為 Google Sheets 採用的是雲端運算架構,計算邏輯跟傳統桌面版的 Excel 有些不同。不過如果你的試算表資料量很大(數萬列以上),過多 volatile 函數還是會影響到操作流暢度。
Google Sheets 有一些特有的函數可以在某些場景下取代 OFFSET。例如 FILTER 函數可以根據條件篩選資料,QUERY 函數則提供了類似 SQL 的查詢能力。如果你的需求是「根據條件取得資料」,而不是「根據位置偏移」,這些函數可能比 OFFSET 更適合。
當你需要在 Excel 和 Google Sheets 之間移轉公式時,有幾個地方要特別注意:
在跨平台協作的工具選擇上,Cloudflare 提供了免費的 CDN 和 DNS 服務,可以加速你的線上協作體驗。如果需要在團隊間傳輸大型試算表檔案,Dropbox Transfer 支援最高 100 GB 的檔案快傳。奶牛快傳 則提供了 4 GB 免費空間的快速檔案分享。如果你還沒有自己的網域來搭建協作平台,可以參考我們的 TLD-List 網域註冊最便宜方案 來找到最划算的選擇。
會的。OFFSET 屬於 volatile(易變)函數,每當試算表中有任何儲存格的值發生變動,所有包含 OFFSET 的公式都會被重新計算。如果你的檔案不大,這個影響幾乎可以忽略。但在資料量龐大且公式數量很多的情況下,確實會造成明顯的延遲。如果你只需要定位取值而不需要動態範圍,建議改用 INDEX+MATCH 來替代。
可以。你只需要把 Reference 參數指向其他工作表的儲存格即可。例如 =OFFSET(Sheet2!A1, 2, 3) 就會從 Sheet2 的 A1 開始偏移。甚至可以跨活頁簿參照,只要目標活頁簿是開啟狀態。不過跨工作表和跨活頁簿的參照會讓公式更複雜,也更容易出錯,建議搭配「評估值公式」功能來除錯。
兩者都可以建立動態參照,但邏輯完全不同。OFFSET 是基於「相對位置偏移」來定位,你需要告訴它起點和偏移量。INDIRECT 則是把文字字串轉換成儲存格參照,例如 =INDIRECT("A"&B1) 會把 B1 的值跟 “A” 組合起來變成儲存格位址。兩者都是 volatile 函數,選擇的重點在於你的資料結構適合用哪種邏輯來描述。
可以,這是 OFFSET 很受歡迎的應用之一。你可以在資料驗證的來源欄位中輸入類似 =OFFSET(A1,0,0,COUNTA(A:A),1) 的公式。這樣一來,當你在 A 欄新增項目時,下拉清單會自動包含新的選項,不需要手動修改驗證範圍。搭配命名範圍使用效果更好,可以讓公式更簡潔易讀。
做法是先用 OFFSET 定義一個動態範圍名稱。在「公式」標籤頁的「名稱管理員」中新增一個名稱,參照到輸入 =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)。然後在圖表的資料來源中引用這個名稱。這樣當資料新增時,圖表會自動更新,不需要手動調整資料範圍。這對於需要定期更新的儀表板或報表來說非常實用。
技術上可以,但不建議。當 Reference 是整欄時,OFFSET 會以 A1 作為起點,但 Excel 可能無法正確判斷回傳範圍的大小。更安全的做法是指定一個明確的起始儲存格(如 A1),然後透過 height 和 width 來控制範圍。如果你需要引用整欄的動態範圍,搭配 COUNTA 來計算實際資料列數是更好的做法。
最常見的原因是偏移後的位置超出了工作表的邊界。例如,以 A1 為起點但 Rows 為負數(往上偏移),或 Cols 為負數且超過了 A 欄的左邊界。另一個常見原因是 height 或 width 參數讓範圍延伸到了工作表之外。解決方法是逐一檢查每個參數的計算結果,確認最終定位的位置是在有效範圍內。你也可以參考微軟官方的 OFFSET 函數說明文件,裡面有更詳細的錯誤代碼解釋。
如果你對更多 WordPress SEO 外掛 或 WordPress 基礎介紹 有興趣,我們也有完整的系列文章可以參考。而 UpdraftPlus 可以幫你自動備份整個網站的資料庫內容,就像 Excel 中定期備份你的公式和資料一樣重要。對於需要分析大量文字內容的使用者,AI Text Classifier 則提供了快速辨識 AI 生成內容的能力,在內容查核的場景中非常實用。