簡體   English   中英

Excel Performance-INDEX-MATCH組合

[英]Excel Performance - INDEX-MATCH combination

我正在使用excel創建稍后在vba應用程序中使用的數據集。 我正在使用這個公式:

=INDEX(BaseData!$L$2:$L$10000;MATCH(DataSet!D5&DataSet!E5&DataSet!K5;INDEX(B‌​aseData!$B$2:$B$10000&BaseData!$C$2:$C$10000&BaseData!$D$2:$D$10000;0);0))

通常范圍從f.ex .: A2 - A10000 ,因為我的數據可能不同長,並且在數據選擇上經常會有所不同。

但是,這會使我的excel速度大大降低。 我切換到手動計算,但是隨后再次激活自動時,我的excel實例花費的時間非常長,並且經常崩潰。

我也嘗試粘貼一些數據,但是當創建一個新的數據集時,我不得不再次拉低公式,有時數據集中會出現此錯誤。

我有什么建議可以使INDEX-MATCH公式更INDEX-MATCH

感謝您的答復!

更新

我猜很多性能都會消失,因為索引匹配不會選擇確切的范圍,而是會計入空白行。 如何自動獲得與索引匹配的精確范圍?

正如我在上面的評論中提到的那樣,只要這是一個“常規”公式而不是數組公式,您可能會發現僅將“ A1:A10000”替換為“ A:A”就可以成功。 無論如何,您可以創建一個單元格,該單元格將計算引用所擁有的數據行數,然后使用該單元格間接引用其中包含數據的完整列。

計算所需范圍

為了使下面的示例起作用,我假設:A列僅包括數字形式的索引鍵; A列的標題及其上方沒有數字; 並且索引行是連續的,沒有間斷。 從以下公式開始:

 =COUNT(A:A)

如果我的上述假設成立,那么這將返回表中數據元素的數量。 一旦知道了這些數據的起始位置,便可以使用該COUNT來確定其終止位置。 假設標題位於第2行中。(我喜歡包含標題,以便在標題下方插入一行時,Excel會選擇要在公式中包含新行)。記住這一點,此公式將創建Excel樣式的引用,該引用在A列中找到包含數據的最后一個單元格:

=ADDRESS(ROW(A2)+1+COUNT(A:A),COLUMN(A2),1,1)

假設有50行數據(從標題下方的第3行開始),以及上面的所有其他假設,則此公式將返回文本結果“ $ A $ 53”。

如果您想做同樣的事情,而是在存在數據的A列中返回整個范圍(從標頭到第53行),則可以執行以下操作:

=ADDRESS(ROW(A2),COLUMN(A2),1,1)&":"&ADDRESS(ROW(A2)+1+COUNT(A:A),COLUMN(A2),1,1)

這將返回文本字符串結果“ $ A $ 2:$ A $ 53”,該結果是對唯一ID值的完整索引的引用。 如果您插入任何行或列,它將自動按照您通常期望的那樣移動。 現在,假設您要為INDEX提取相同的數據,但是要提取B列。 該公式將完全相同,除了上面有“ COLUMN(A2)”的地方,將其替換為“ COLUMN(B2)”。

參考您的計算范圍

因此,現在您有了適當的有限列​​的地址-但是您實際上如何在公式中引用這些區域? 通過使用INDIRECT函數。 INDIRECT說:“評估一些特定條件。它將創建一個單元格引用。現在查看該單元格引用。” 最簡單的形式如下所示:

=INDIRECT(A1)

假定A1保持值為“ B5”。 間接將獲取值“ B5”,而不是顯示“ B5”,它將轉到B5,並在那里獲取值。 因此,要將其與上面的代碼一起使用,請將整個內容包裝在INDIRECT函數中。 現在,它實際上將正確地引用該范圍,而不是選擇文本字符串“ $ A $ 1:$ A $ 53”。 像這樣:

=INDIRECT(ADDRESS(ROW(A2),COLUMN(A2),1,1)&":"&ADDRESS(ROW(A2)+1+COUNT(A:A),COLUMN(A2),1,1))

使用命名范圍

但這是一個很長的公式,您不想在特定單元格中使用它來進行簡單的INDEX / MATCH。 建議您不要轉到“功能區”->“名稱管理器”->“新名稱”,而不要在單元格中輸入這些公式(盡管可以)。 調用索引“ A ID_COLUMN”的名稱。 調用索引“ B_COLUMN”的名稱(或更具體的名稱)。

最終公式

現在,如果您想對表格進行INDEX / MATCH,當您更改數據時表格會自動增大/縮小,則公式將如下所示[例如,從B列中選擇行,其中A列具有100]:

=INDEX(ID_COLUMN,MATCH(100, B_COLUMN, 0))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM