Excel OFFSET – 透過 OFFSET 函數幫你取出指定間隔的資料

在 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 的完整語法如下:

=OFFSET(reference, rows, cols, [height], [width])

這五個參數看似複雜,其實邏輯很直觀。下面逐一拆解每個參數的意義與使用方式。

Reference(必要參數)

這是你設定的「起點」。可以是一個儲存格(例如 A1),也可以是一個連續範圍(例如 A1:C10)。OFFSET 會以這個起點為基準,開始計算偏移量。要注意的是,Reference 必須指向一個實際存在的儲存格或範圍,如果傳入的不是有效參照,Excel 會回傳 #VALUE! 錯誤。

Rows(必要參數)

告訴 OFFSET 要從起點往下或往上移動幾列。正數代表往下,負數代表往上,0表示不偏移。舉例來說,如果 Reference 是 A1、Rows 是 5,那結果就是 A6(從 A1 往下 5 列)。這在處理縱向資料時非常實用,像是在一份由 CleverPDF 轉出來的報表中,你可能需要跳過標題列,直接從資料區開始取值。

Cols(必要參數)

控制水平方向的偏移。正數往右,負數往左,0不動。如果 Reference 是 A1、Cols 是 3,結果就是 D1(從 A 欄往右移 3 欄到 D 欄)。當你的資料欄位很多時,這個參數可以幫你精準定位到目標欄位,不用管中間經過了哪些欄。

Height 與 Width(選擇性參數)

這兩個參數決定了 OFFSET 回傳的是「單一儲存格」還是「一個範圍」。如果省略,Excel 會自動採用 Reference 的大小。如果你指定了 Height 為 5、Width 為 3,OFFSET 就會回傳一個 5 列乘以 3 欄的範圍。這在需要動態範圍的場景中特別重要,例如搭配 SUM 或 AVERAGE 計算變動區間的統計值。

需要特別注意的是,Height 和 Width 都必須是正整數。如果你給了負數或 0,Excel 會回傳錯誤。如果你想要檢查公式中每個部分的計算結果,可以參考我們之前介紹過的 Diff Checker Text,用來比對修改前後的公式差異。如果你手邊有大量 PDF 格式的資料表需要轉換成 Excel,EasyPDF 是一個不錯的免費工具。

OFFSET 基礎範例:從單一儲存格取值

在深入了解進階用法之前,先從最基本的單一儲存格取值開始。這是最直覺、也最容易理解 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 密碼產生器 來建立強密碼保護你的雲端檔案。

進階應用一:每隔 N 列(或 N 欄)自動取值

這大概是 OFFSET 最經典的應用場景了。原始文章也提到了這個技巧,但我們要在這裡做更完整的說明,讓你徹底理解公式背後的邏輯。

每隔一列取值(奇數行/偶數行資料擷取)

假設你有一份學生名單,編號和姓名交替排列在同一欄裡,長得像這樣:

儲存格內容
A21(編號)
A3王小明(姓名)
A42(編號)
A5李小華(姓名)
A63(編號)
A7張大偉(姓名)

你想要把「編號」單獨抽出來放到 D 欄,「姓名」放到 E 欄。在 D2 輸入以下公式:

=OFFSET(A$2, (ROW(A1)-1)*2, 0)

  • A$2:起始參照點,鎖定在第 2 列($符號確保下拉時起點不會跑掉)
  • ROW(A1):取得 A1 的列號,也就是 1
  • (ROW(A1)-1)*2:先減 1 得到 0,再乘以 2 還是 0
  • 所以 D2 的 OFFSET 偏移量為 0,直接回傳 A2 的值,也就是「1」

當你把公式下拉到 D3 時:

  • ROW(A1) 變成 ROW(A2),列號變成 2
  • (2-1)*2 = 2,所以 OFFSET 從 A2 往下偏移 2 列,到達 A4
  • D3 回傳 A4 的值,也就是「2」

同樣的邏輯,在 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 搭配 SUM 與 AVERAGE 計算動態範圍

OFFSET 的 Height 和 Width 參數讓它能夠回傳一個範圍,而不只是單一儲存格。當你把這個動態範圍交給 SUM 或 AVERAGE 處理,就能做到「資料新增多少,計算範圍就自動擴展多少」的效果。

動態加總:自動計算整欄非空資料的總和

公式如下:

=SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))

拆解這個公式:

  • A1:起點
  • 0, 0:不偏移,直接從 A1 開始
  • COUNTA(A:A):計算 A 欄中非空儲存格的數量,作為 Height
  • 1:Width 為 1,表示只取一欄

這樣不管你在 A 欄新增了多少筆資料,SUM 的計算範圍都會自動包含所有非空的儲存格。在做月報或季報的時候特別好用,因為你再也不需要每個月手動去修改 SUM 的範圍。

移動平均:計算最近 N 筆資料的平均值

移動平均是財務分析和品質管理中常用的指標。用 OFFSET 來實作非常優雅:

=AVERAGE(OFFSET(A1, COUNTA(A:A)-5, 0, 5, 1))

這個公式會從 A 欄的最後一筆資料往上數 5 筆,計算這 5 筆的平均值。當你新增第 6 筆資料時,計算範圍會自動變成第 2 到第 6 筆,永遠保持「最近 5 筆」的邏輯。把 5 改成任何你需要的數字,就能彈性調整移動平均的期數。

在處理大量數值資料時,如果你需要提升圖片的品質來做更清楚的圖表說明,可以試試 AI Image Enhancer。而 ShortPixelImagify 則可以幫你壓縮試算表中嵌入的圖片,減少檔案大小。如果你需要壓縮的是獨立的圖片檔案,Compressor.io 也是一個方便的免費工具。

進階應用三:OFFSET 搭配 MATCH 實現雙向查詢

VLOOKUP 是大家最熟悉的查詢函數,但它有一個致命的限制:只能向右查。如果你的目標值在查詢欄的左邊,VLOOKUP 就無能為力了。這時候 OFFSET 搭配 MATCH 就能派上用場。

基本原理

MATCH 函數的功能是「在範圍中找到目標值,回傳它的相對位置」。例如 =MATCH("王小明", B:B, 0) 會告訴你「王小明」在 B 欄中是第幾個(精確比對模式)。

把 MATCH 的結果交給 OFFSET 當作偏移量,就能精準定位到目標資料列。公式範例:

=OFFSET(A1, MATCH(“王小明”, B:B, 0)-1, 3)

  • MATCH 找到「王小明」在 B 欄的位置(假設是第 5 列)
  • 減 1 是因為 OFFSET 的偏移是從 0 開始算,而 MATCH 回傳的是第幾個(從 1 開始)
  • 最後的 3 表示往右偏移 3 欄
  • 整個公式的效果等同於 VLOOKUP 的向右查詢,但彈性更大

向左查詢的優勢

真正厲害的是,你可以把 Cols 設為負數來向左查詢。這是 VLOOKUP 做不到的:

=OFFSET(D1, MATCH(“王小明”, C:C, 0)-1, -2)

這個公式會在 C 欄找到「王小明」,然後從 D 欄往左偏移 2 欄(到 A 欄),取得對應的編號。在設計資料表結構時,你不必再為了遷就 VLOOKUP 而把查詢欄硬放在最左邊。

如果你需要合法取得 Office 軟體來練習這些公式,可以參考我們之前整理的 Gofunco 非法序號警告,了解哪些購買管道是不安全的。而 Windows 與 Office 序號分析 則提供了完整的正版購買建議。便宜的 Office 序號能不能買 這篇文章也值得一看,幫你避開常見的陷阱。

OFFSET 與 INDEX 函數的差異比較

很多 Excel 使用者在學會 OFFSET 之後,會發現 INDEX 函數似乎也能做類似的事情。那到底什麼時候該用 OFFSET,什麼時候該用 INDEX?這段就來把兩者的差異說清楚。

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 是唯一的選擇。

效能考量:Volatile 函數的影響

這是很多進階使用者會關心的重點。OFFSET 屬於 volatile 函數(易變函數),意思是只要試算表中有任何儲存格的值被修改,Excel 就會重新計算所有包含 OFFSET 的公式,即使修改的內容跟 OFFSET 的參考範圍毫無關係。

在小型試算表中,這個影響幾乎感覺不到。但如果你在一個有幾萬列資料、幾百個公式的大型檔案裡大量使用 OFFSET,每次修改任何儲存格都會觸發全部公式重新計算,明顯拖慢整體效能。

INDEX 不屬於 volatile 函數,只有在它參考的範圍實際發生變化時才會重新計算。所以如果你的需求只是「定位取值」,不需要動態範圍,那 INDEX+MATCH 的組合在效能上是更好的選擇。

選擇建議

需求場景推薦函數原因
需要動態範圍(height/width)OFFSETINDEX 無法回傳變動大小的範圍
單純定位取值INDEX+MATCH效能較好,非 volatile
搭配 SUM/AVERAGE 計算動態區間OFFSET需要動態範圍參數
大型試算表(效能敏感)INDEX+MATCH避免 volatile 函數拖慢速度

想進一步提升 Excel 技巧的話,可以看看 Udemy 免費課程懶人包,裡面有不少優質的試算表課程。Education.com 也提供了許多學習資源。如果你對 AI 輔助學習有興趣,ChatGPT 可以幫你解釋任何看不懂的公式邏輯,讓學習效率大幅提升。

OFFSET 常見錯誤與除錯技巧

使用 OFFSET 時,遇到錯誤訊息是正常的,尤其是剛開始學的時候。以下整理了最常見的幾種錯誤,以及對應的解決方法。

#REF! 錯誤:範圍超出邊界

這是 OFFSET 最常見的錯誤。當偏移後的位置跑到了工作表的範圍之外(例如往左偏移超過了 A 欄,或往上偏移超過了第 1 列),Excel 就會回傳 #REF!

解決方法很直接:檢查你的偏移量。如果 Rows 是負數,確保 Reference 的列號 + Rows ≥ 1。如果 Cols 是負數,確保 Reference 的欄號 + Cols ≥ 1。一個實用的除錯習慣是,先把 OFFSET 拆開來看:把 rows 和 cols 的值單獨放在儲存格裡,確認計算結果符合預期,再組回公式中。

#VALUE! 錯誤:無效的 Reference

當 Reference 參數指向的不是有效的儲存格或範圍時,就會出現這個錯誤。常見原因包括:Reference 引用了已被刪除的範圍、Reference 是一個常數而非儲存格參照、或者 Reference 引用了另一個出錯的公式結果。

Height 或 Width 為負數或零

OFFSET 的 Height 和 Width 參數必須是正整數。如果你用其他函數的計算結果作為這兩個參數,有可能在邊界條件下產生 0 或負數,導致公式報錯。一個簡單的防範做法是用 MAX 函數確保最小值為 1:

=OFFSET(A1, 0, 0, MAX(1, COUNTA(A:A)), 1)

善用「評估值公式」功能

Excel 內建了一個很好用的除錯工具。在公式標籤頁裡點選「評估值公式」,Excel 會一步一步展示公式的計算過程,讓你清楚看到每個部分在哪裡出了問題。特別是在公式很長、巢狀層級很多的時候,這個功能可以省下大量找錯的時間。

用 IFERROR 包裹公式

如果你不想讓錯誤值顯示在正式的報表中,可以用 IFERROR 把 OFFSET 包起來:

=IFERROR(OFFSET(A$2, (ROW(A1)-1)*2, 0), “”)

這樣當 OFFSET 計算出錯時,儲存格會顯示空白,而不是嚇人的錯誤代碼。不過要注意,IFERROR 會把所有類型的錯誤都隱藏起來,建議在確認公式邏輯正確之後再使用。

如果你在搭建公司內部系統需要用到虛擬主機,可以參考 Bluehost 主機評價,它是 WordPress 官方推薦的主機服務之一。Kinsta 則主打高效能的 WordPress 代管服務,適合流量較大的網站。如果你在尋找更多選擇,SiteGround 也是一個評價不錯的選項。完整的比較可以看我們整理的 WordPress 虛擬主機推薦懶人包

OFFSET 在 Google Sheets 中的使用差異

如果你同時使用 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 之間移轉公式時,有幾個地方要特別注意:

  • 如果在 Google Sheets 中使用 OFFSET 搭配 IMPORTRANGE 或其他外部資料來源,行為可能跟 Excel 中不同
  • Google Sheets 對陣列公式的處理方式跟 Excel 不一樣,可能需要加上 ARRAYFORMULA
  • 部分 Excel 特有的參數命名或預設行為,在 Google Sheets 中可能有細微差異

在跨平台協作的工具選擇上,Cloudflare 提供了免費的 CDN 和 DNS 服務,可以加速你的線上協作體驗。如果需要在團隊間傳輸大型試算表檔案,Dropbox Transfer 支援最高 100 GB 的檔案快傳。奶牛快傳 則提供了 4 GB 免費空間的快速檔案分享。如果你還沒有自己的網域來搭建協作平台,可以參考我們的 TLD-List 網域註冊最便宜方案 來找到最划算的選擇。

OFFSET 函數常見問題 FAQ

OFFSET 函數會不會讓 Excel 變慢?

會的。OFFSET 屬於 volatile(易變)函數,每當試算表中有任何儲存格的值發生變動,所有包含 OFFSET 的公式都會被重新計算。如果你的檔案不大,這個影響幾乎可以忽略。但在資料量龐大且公式數量很多的情況下,確實會造成明顯的延遲。如果你只需要定位取值而不需要動態範圍,建議改用 INDEX+MATCH 來替代。

OFFSET 可以跨工作表參照嗎?

可以。你只需要把 Reference 參數指向其他工作表的儲存格即可。例如 =OFFSET(Sheet2!A1, 2, 3) 就會從 Sheet2 的 A1 開始偏移。甚至可以跨活頁簿參照,只要目標活頁簿是開啟狀態。不過跨工作表和跨活頁簿的參照會讓公式更複雜,也更容易出錯,建議搭配「評估值公式」功能來除錯。

OFFSET 和 INDIRECT 有什麼不同?

兩者都可以建立動態參照,但邏輯完全不同。OFFSET 是基於「相對位置偏移」來定位,你需要告訴它起點和偏移量。INDIRECT 則是把文字字串轉換成儲存格參照,例如 =INDIRECT("A"&B1) 會把 B1 的值跟 “A” 組合起來變成儲存格位址。兩者都是 volatile 函數,選擇的重點在於你的資料結構適合用哪種邏輯來描述。

OFFSET 可以用在資料驗證的下拉清單嗎?

可以,這是 OFFSET 很受歡迎的應用之一。你可以在資料驗證的來源欄位中輸入類似 =OFFSET(A1,0,0,COUNTA(A:A),1) 的公式。這樣一來,當你在 A 欄新增項目時,下拉清單會自動包含新的選項,不需要手動修改驗證範圍。搭配命名範圍使用效果更好,可以讓公式更簡潔易讀。

如何用 OFFSET 建立動態圖表的資料來源?

做法是先用 OFFSET 定義一個動態範圍名稱。在「公式」標籤頁的「名稱管理員」中新增一個名稱,參照到輸入 =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)。然後在圖表的資料來源中引用這個名稱。這樣當資料新增時,圖表會自動更新,不需要手動調整資料範圍。這對於需要定期更新的儀表板或報表來說非常實用。

OFFSET 的 Reference 可以是整欄(如 A:A)嗎?

技術上可以,但不建議。當 Reference 是整欄時,OFFSET 會以 A1 作為起點,但 Excel 可能無法正確判斷回傳範圍的大小。更安全的做法是指定一個明確的起始儲存格(如 A1),然後透過 height 和 width 來控制範圍。如果你需要引用整欄的動態範圍,搭配 COUNTA 來計算實際資料列數是更好的做法。

為什麼我的 OFFSET 公式出現 #REF! 錯誤?

最常見的原因是偏移後的位置超出了工作表的邊界。例如,以 A1 為起點但 Rows 為負數(往上偏移),或 Cols 為負數且超過了 A 欄的左邊界。另一個常見原因是 height 或 width 參數讓範圍延伸到了工作表之外。解決方法是逐一檢查每個參數的計算結果,確認最終定位的位置是在有效範圍內。你也可以參考微軟官方的 OFFSET 函數說明文件,裡面有更詳細的錯誤代碼解釋。

如果你對更多 WordPress SEO 外掛WordPress 基礎介紹 有興趣,我們也有完整的系列文章可以參考。而 UpdraftPlus 可以幫你自動備份整個網站的資料庫內容,就像 Excel 中定期備份你的公式和資料一樣重要。對於需要分析大量文字內容的使用者,AI Text Classifier 則提供了快速辨識 AI 生成內容的能力,在內容查核的場景中非常實用。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 669

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


目錄
Share to...