精通Excel數組公式14:使用INDEX函數和OFFSET函數創建動態單元格區域

2021-02-20 完美Excel

學習Excel技術,關注微信公眾號:

excelperfect

動態單元格區域是指當添加或刪除源數據時,或者隨著包含單元格區域的公式被向下複製時根據某條件更改,可以自動擴展或收縮的單元格區域,可以用於公式、圖表、數據透視表和其他位置。

 

那麼,如何創建動態單元格區域呢?可以使用INDEX函數或者OFFSET函數。許多人傾向於使用INDEX函數,因為OFFSET函數是一個易失性函數。

 

什麼是易失性函數?

每當Excel重新計算電子表格時,無論其引用的單元格有無變化,易失性函數都會重新計算。許多操作都會觸發重新計算,例如在單元格中輸入數據、插入行等。這樣,易失性函數會增加公式的計算時間。下面列出了一些觸發重新計算的操作:

1.輸入新的數據

2.刪除/插入行/列

3.執行自動篩選

4.雙擊行列分隔線

5.重命名工作表

6.改變工作表的位置

 

下面列出了一些易失性函數:CELL函數,INDIRECT函數,INFO函數,NOW函數,OFFSET函數,RAND函數,TODAY函數。

 

INDEX:查找行或列的公式

創建動態單元格區域的最基本的公式類型是基於條件來查找整行或整列值,可以使用INDEX函數實現。

 

INDEX函數有3個參數:

=INDEX(array,row_num,column_num)

 

通常,給參數row_num指定行號,給參數column_num指定列號,INDEX函數執行雙向查找返回行列號交叉處的值。如果要獲取整列,那麼只需要給INDEX函數指定代表列號的參數column_num的值,忽略參數row_num(為空)或者指定其值為0。通過指定參數row_num為空或0,告訴Excel返回所選列的所有行。

 

同理,想要獲取整行,則需要指定參數row_num的值代表行號,將參數column_num指定為空或0。這告訴Excel需要返回所選行的所有列。

 

圖1:查找並求2月份的數值之和

 

注意,圖1所示的公式並不需要按Ctrl+Shift+Enter組合鍵,雖然INDEX函數返回的是一個單元格區域,其原因是沒有執行直接數組操作。下面兩種情況需要按Ctrl+Shift+Enter組合鍵:

1.如果放置需要Ctrl +Shift + Enter進入公式的直接數組操作,則需要使用Ctrl +Shift + Enter。

2.如果想要傳遞多個值到多個單元格,則必須使用Ctrl +Shift + Enter。

 

用於處理擴大和縮小單元格區域的動態單元格區域公式

在創建動態單元格區域公式之前,必須問清楚下列問題:

1.是垂直單元格區域(一列)嗎?

2.是水平單元格區域(一行)嗎?

3.是雙向單元格區域(行列)嗎?

4.是數字、文本,還是混合數據?

5.是否存在空單元格?

 

對這些問題的答案決定可能使用哪種公式。

 

MATCH:確定數據集中的最後一個相對位置

下圖2展示了4列不同的數據類型:單元格區域A5:A10在最後一項前包含混合數據,其中沒有空單元格;單元格區域A16:A21在最後一項前包含帶有空單元格的混合數據;單元格區域C5:C10在最後一項前包含帶有空單元格的數字數據;單元格區域C16:C21在最後一項前包含帶有空單元格的文本數據。在所有這4種情形下,要使用公式創建在添加或減少數據時擴充或縮減的動態單元格區域,需要確定該列中最後一個相對位置。圖2中展示了6種可能的公式。

圖2:對於不同數據類型查找最後一行

 

在圖2所示的公式[2]至[6]中,展示了一種近似查找值的技術:當要查找的值比單元格區域中的任何值都大且執行近似匹配(即MATCH函數的第3個參數為空)時,將總是獲取列表中最後一個相對位置,即便存在空單元格。

 

INDEX和MATCH函數:獲取單元格區域中的最後一項

下圖3和圖4展示了如何使用MATCH和INDEX函數在單元格區域中查找最後一項。

圖3:當有4條記錄時查找單元格區域中的最後一項

 

圖4:當有6條記錄時查找單元格區域中的最後一項

 

使用INDEX和MATCH函數創建可以擴展和縮小的動態單元格區域

如下圖5所示,在單元格E2中是一個數據有效性下拉列表,其內容來源於單元格區域A2:A5,在單元格F2中的VLOOKUP公式從單元格區域A2:C5中查找並返回相應的數據。

圖5:下拉列表和VLOOKUP公式

 

問題是,當在單元格區域A2:C5的下方添加更多的數據時,數據有效性下拉列表和VLOOKUP公式中的相應單元格區域都不會更新。當前,在「成本」列中的最後一項是單元格C5,如果添加新記錄,在「成本」列中最新的最後一項應該是單元格C6,這意味著在VLOOKUP公式中的查找區域需要從$A$2:$C$5改變為$A$2:$C$6。注意到,這兩個區域都開始於相同的單元格$A$2。我們現在的任務,就是找到一種方法,當添加或刪除記錄時,其最後一個單元格引用能夠相應更新。此時,可以使用INDEX函數。

 

靜態的單元格區域如下:

$A$2:$C$5

 

創建的動態單元格區域如下:

$A$2:INDEX($C$2:$C$8,MATCH(9.99E+307,$C$2:$C$8))

 

注意,由於INDEX函數位於一個起始單元格引用和冒號之後,因此不再獲取該區域中的最後一項,而是獲取該區域中最後一項的單元格地址(單元格引用)。

 

此時,你在圖5的數據區域中添加或刪除記錄,創建的動態單元格區域會自動更新。

 

下面是創建動態單元格區域公式的關鍵點:

1.足夠的行以容納所有潛在數據。

(1)如果含有數字的數據集在列C中並決不會超過50條記錄,可使用:

=$A$2:INDEX($C$2:$C$51,MATCH(9.99E+307,$C$2:$C$51))

(2)如果含有數字的數據集在列C中並決不會超過500條記錄,可使用:

=$A$2:INDEX($C$2:$C$501,MATCH(9.99E+307,$C$2:$C$501))

(3)如果含有數字的數據集在列C中並且不確定有多少條記錄,可使用:

=$A$2:INDEX($C:$C,MATCH(9.99E+307,$C:$C))

2.不要在公式使用的單元格區域的下方輸入無關數據,因為會導致公式創建不正確的區域。例如,如果公式使用潛在單元格區域$C$2:$C$50,並且最後一個數據位於單元格C25,那麼不要再在單元格C49中輸入數據,因為公式會將其考慮為該列的最後一個單元格。

註:本文為電子書《精通Excel數組公式(學習筆記版)》中的一部分內容節選。你可以到知識星球App的完美Excel社群下載這本電子書的完整中文版。

歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。

歡迎到知識星球:完美Excel社群,進行技術交流和提問,獲取更多電子資料。

相關焦點

  • 精通Excel數組公式15:使用INDEX函數和OFFSET函數創建動態單元格區域(續)
    導語:本文為《精通Excel數組公式14:使用INDEX函數和OFFSET函數創建動態單元格區域》的後半部分。將動態單元格區域公式定義為名稱創建動態單元格區域的公式不能直接用於創建數據有效性下拉列表。然而,可以將其定義為名稱,然後在創建數據有效性下拉列表時使用這個名稱。
  • Excel函數應用篇:offset函數公式的使用實例
    offset在excel表格中是一個非常厲害的函數,它在下拉菜單、動態圖表、動態引用操作中有不可替代的作用,今天我們就來學習一下offset函數公式的使用
  • Excel表格中最強大的單元格區域引用函數———Offset函數
    在Excel表格輸入公式時,單元格區域的引用是必不可少的;直接框選單元格區域可以實現基本的操作需要,如果要實現動態的單元格區域引用就無能為力了。這篇文章為朋友們分享一下最強大的單元格區域引用函數→offset函數的基本概念和應用實例。Offset函數自身只是一個單元格區域引用函數、並沒有什麼強大的功能。
  • offset函數公式的使用實例
    offset在excel表格中是一個非常厲害的函數,它在下拉菜單、動態圖表、動態引用操作中有不可替代的作用,今天我們就來學習一下offset函數公式的使用。  excel中offset函數功能在excel中offse函數也同彙編語言一樣也表示地址偏移,offse函數的主要功能是返回對單元格或單元格區域中指定行數和列數的區域的引用。 返回的引用可以是單個單元格或單元格區域。 可以指定要返回的行數和列數。
  • Excel函數應用篇:INDEX函數
    在使用INDEX()函數時,第二、三參數一般情況與MATCH()函數配合使用,以實現動態查找引用的目的。第一:index函數用法解釋  INDEX函數的用法是返回列表或數組中的元素值,此元素由行序號和列序號的索引值確定。即行列交叉點所在的引用。
  • Excel函數公式:使用Offset函數製作動態圖表
    方法:選定「月份」和「鍵盤」所在的單元格區域,暨B2:C8區域。【插入】-【簇狀柱形圖】。對【組合框】右鍵-【設置控制項格式】-【數據源區域】選擇第2部轉置的數據區域,【單元格連結】選擇【鍵盤】右側的第一個單元格。勾選【三位陰影】-【確定】。三、定義名稱。
  • Excel引用函數offset教程
    (ID:ExcelLiRui)微信個人號 | (ID:ExcelLiRui520)關鍵字:offsetExcel引用函數offset教程Excel中的引用函數offset是必會函數之一,無論是函數建模還是製作動態圖表都離不開offset的強大功能。
  • 老闆給了條件,如何用excel取出數值?學會offset+match函數
    如圖中案例表格,除了我們之前講的index+match這一組函數,用offset+match這一組函數也很容易實現。而且,offset+match還有更高級的用法(比如製作多級聯動下拉菜單),我們會在後面的課程講到。如果你沒有學會這些函數,那麼就無法應對大量數據的表格。
  • excel數組公式進階:按列查找的時候,記得要使用這個函數!
    課程信息卡課程:《Excel天天訓練營》2.0圖文版章節:第2章-精通函數內容:數組公式(列查找)用excel數組公式,如果遇上按列查找的時候,你會發現公式會出問題。用法為:=transpose(數組)示例說明:選中E3:G5單元格區域,數組公式為=TRANSPOSE(A2:C4)即將A2
  • 利用OFFSET函數與COUNTA函數創建動態名稱,數據動態變化 - Excel教案
    我們在excel中可以利用OFFSET函數與COUNTA函數的組合,可以創建一個動態的名稱。動態名稱是名稱的高級用法,能夠實現對一個未知大小的區域的引用,利用OFFSET函數與COUNTA函數創建動態名稱,此用法在Excel的諸多功能中都能發揮強大的威力。
  • Excel INDEX查找引用函數使用案例教程.Excel Index+Match函數多條件查找案例教程.
    當使用數組形式時,返回指定單元格或單元格數組的值;當使用引用形式時,則返回指定單元格的引用。數組形式:INDEX數組形式返回表格或數組中的元素值,此元素由行號和列號的索引值給定。當函數 INDEX 的第一個參數為數組常量時,使用數組形式。
  • Excel函數學習14:INDIRECT函數
    如果INDIRECT函數創建對另一個工作簿的引用,那麼該工作簿必須打開,否則公式的結果為#REF!錯誤。如果INDIRECT函數創建所限制的行和列之外的區域的引用,那麼公式將出現#REF!錯誤。(Excel 2007和Excel 2010)INDIRECT函數不能對動態命名區域進行引用。
  • Excel公式與函數之美07:公式中的王者——數組公式
    使用數組公式,可以判斷數據是否與指定區域中的數據相匹配,可以統計單元格區域中不重複值的數量,可以提取單元格區域中的不重複數據,將列數據轉換為行數據,…,等等。本文只是簡單地介紹數組公式,讓感興趣的朋友對其有所了解,為進一步的研究和應用打下基礎。
  • excel中使用vlookup函數查找老出錯?試試index—match函數吧
    在excel中,運用查找函數是excel中進行數據統計分析最常用的操作之一,說起查找函數,很多人首先會想到vlookup函數,其實excel中的查找函數有很多種,比如lookup、index-match等,尤其是index—match函數的使用範圍比vlookup函數更加廣泛,在反向查找、橫向查找等方面能夠克服vloolup函數的不便,提供更加容易理解的查找思路
  • Excel函數公式教程:INDEX和MATCH函數應用
    第二,INDEX函數用法介紹  INDEX函數的功能就是返回指定單元格區域或數組常量。如果同時使用參數行號和列號,函數INDEX返回 行號和列號交叉處的單元格中的值。如下圖所示:  隨意選擇一個型號,比如A0110,然後在B6單元格輸入公式:=MATCH($B$5,$D$4:$D$12,0),得到結果1。  公式解釋:用MATCH函數查找B5單元格這個型號在D4:D12區域中對應的位置。其中的0參數可以省略不寫。MATCH函數中0代表精確查找,1是模糊查找。
  • Excel函數用法24——INDEX
    【標籤】 excel表格函數、index函數使用 INDEX 函數有兩種方法:
  • 精通Excel數組公式005:比較數組運算及使用一個或多個條件的聚合計算
    如下圖1所示,在單元格區域A3:B8中記錄了城市名和對應的時間,想要知道每個城市對應的最小時間。我們知道,可以使用MIN函數來求一組數值的最小值,但是如何分離出每個城市並分別求出它們對應的時間最小值呢?
  • Excel公式與函數之美09:小而美的函數之ROW函數和ROWS函數
    如果指定的是單元格區域,則返回區域左上角單元格所在的行號。如果不指定單元格,則返回當前單元格所在的行號。 下圖1展示了ROW函數的基本用法。 ROW函數和ROWS函數的美在於能夠為其他函數提供數字作為參數,特別是提供動態的數字,從而組合成更為強大的公式。這有點類似程序中的計數器。 ROW函數和ROWS函數是公式構成中最基本的函數,一般嵌套在其他函數中,其結果作為其參數。在這裡,我把這類函數稱之為「元函數」。
  • 設置動態求和效果其實並不難,使用sum+offset+match函數即可搞定
    Hello,大家好,今天跟大家分享下我們如何在excel中設置動態求和的效果,如下圖,當我們更改姓名和月份的時候會根據我們選擇的數據自動求和,比如:我們將名字設置為劉備,截止月份設置為12月,就會對劉備1月到12月的數據進行求和,這個的操作其實也並不難,我們使用offse,sum以及
  • excel中index—match查找函數實例講解
    而index函數屬於定位函數,也有三個參數,第一個參數表示引用或者查找的區域,第二個參數表示行數,第三個參數表示列數。後兩個參數可以省略其中一個。如下圖所示,在F2單元格內輸入公式=INDEX(A2:D19,4,2)表示返回A2到D19區域中的第4行第2列,結果為「曹仁」。