2015-11-06 188 views
1

我想使用INDEX MATCH來根據多個條件返回一個值。有人幫助我瞭解了一點,但我找不到添加其他標準的方法。我從在一分鐘的工作計算公式爲:多個VLOOKUP或INDEX MATCH

=IFERROR(INDEX(DATA!$H$2:$H$2000,SMALL(IF(DATA!$K$2:$K$2000="Yes",ROW(DATA!$A$2:$A$2000)-ROW(DATA!$A$2)+1,""),ROWS(DATA!$A$2:A2))),"") 

這從我的基礎上,回答一個標準是「YES」的數據列表返回一個人的名字。

我需要再添加兩個條件才能返回更少的結果。這將基於一個月和一年,兩者都以不同的單元格數字顯示,即102015。當該行中的其他值爲「YES」時,我只想返回索引列表,102015

回答

0

如果您瞭解他們正在嘗試做什麼,那些增量和行數就不必要地複雜化了。

ROWS(DATA!$A$2:A2)簡單地遞增1,2,3,...,當你填寫。這可以簡化爲ROW(1:1)。只要您意識到您要返回 H2:H2000中的位置,而不是工作表上的實際行號,則ROW(DATA!$A$2:$A$2000)-ROW(DATA!$A$2)+1可簡化爲ROW($1:$1999)。請注意,任何簡化引用都不使用工作表名稱或列名稱。他們根本沒有必要。

此外,AGGREGATE¹ function使得條件快速的工作,當你使用子功能(SMALL)與optiona (忽略錯誤)。通過將任何不匹配的內容轉換爲#DIV/0!錯誤,您只剩下匹配的行。

的標準公式XL2010和更高:

=IFERROR(INDEX(DATA!$H$2:$H$2000, AGGREGATE(15, 6, ROW($1:$1999)/((DATA!$K$2:$K$2000="Yes")*(DATA!$L$2:$L$2000=10)*(DATA!$M$2:$M$2000=2015)), ROW(1:1))),"") 

的標準公式XL2007和更早:

=IFERROR(INDEX(DATA!$H$2:$H$2000, SMALL(INDEX(ROW($1:$1999)+((DATA!$K$2:$K$2000<>"Yes")+(DATA!$L$2:$L$2000<>10)+(DATA!$M$2:$M$2000<>2015))*1E+99, ,), ROW(1:1))),"") 

¹AGGREGATE function用Excel 2010中引入的這是不在早期版本中可用。

+0

這是狂熱!非常感謝你的幫助。它已經佔用了太多的時間,現在感覺被浪費了,正如我以前所要求的那樣。 –

+0

很高興那個解決了。請記住,這些是標準公式,而不是數組公式。他們不需要按Ctrl + Shift + Enter鍵就像您使用的原始文件一樣。 – Jeeped