這里分享一個對INDEX函數(shù)+MATCH函數(shù)嵌套的小總結(jié)~~ 首先呢,,INDEX函數(shù)+MATCH函數(shù)嵌套的最基本格式如下: index(序列1,match(值,序列2,0)) 其含義為: 根據(jù)“值”在序列2中的位置,,得出序列1中相同位置的值(模糊查找時,,最后參數(shù)也可能是1,、-1)。 這個看似和vlookup函數(shù)很像,,但它不需要源數(shù)據(jù)的嚴(yán)格對齊,,也不需要查找值必須在首列,,更為靈活一些~ 實例如下: 這樣的反向查找,其實用VLOOKUP,、LOOKUP,、INDEX+MATCH都是可以做到的,3個公式分別如下: VLOOKUP法: =VLOOKUP(E3,IF({1,0},$C$2:$C$9,$B$2:$B$9),2,FALSE) LOOKUP法: =LOOKUP(1,0/($C$2:$C$9=E3),$B$2:$B$9) INDEX+MATCH法: =INDEX($B$2:$B$9,MATCH(E3,$C$2:$C$9,0)) 這個基本實例中,,序列1就是B2:B9,,序列2是C2:C9,查找值是E3,。以上,,可見3者異同。 除了以上的基本情景,,INDEX+MATCH嵌套也可能會用在其他的怪異需求中,。 比如下面的例子: 要將B列內(nèi)容各自重復(fù)C列指定的次數(shù),形成一個新的序列,。 首先,,我們想到用INDEX來提取B列內(nèi)容: =INDEX($B$14:$B$17,X) 只是,這個X應(yīng)該是什么呢? 它得是一個在下拉的時候,,前6個取值是1,,然后2個2,然后5個3,,然后3個4,,這樣的序列。 我們自然想到,,先將頻次序列{6,2,5,3}變成累計序列{6,8,13,16},,然后從0開始對它進行模糊查找,如下: =MATCH(ROW(A1)-1,{6,8,13,16},1) (下拉) 這時,,得到了這樣一個序列: {#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,1,1,2,2,2,2,2,3,3,3} 這個序列,,離我們想要的序列還有兩點不同:1都變成了錯誤值,后面的取值也都少了1;據(jù)此可以在后面+1,,前面增加IFERROR: =IFERROR(MATCH(ROW(A1)-1,{6,8,13,16},1)+1,1) (下拉) 此時,,成功獲得了想要的序列X,那么將它替換回原公式,,即: =INDEX($B$14:$B$17,IFERROR(MATCH(ROW(A1)-1,{6,8,13,16},1)+1,1) ) (下拉) 如此,,目的實現(xiàn)。 最后,,還有一個問題,,即公式中的累計序列如何計算得到? 這可以用offset選定區(qū)域并求和獲得: =SUBTOTAL(9,OFFSET($C$14,,,ROW($1:$4),1)) (此為數(shù)組公式) 即將C14分別向下1、2,、3,、4格的區(qū)域求和,。 用以上公式替代掉{6,8,13,16},則最終的公式為: =INDEX($B$14:$B$17,IFERROR(MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET($C$14,,,ROW($1:$4),1)),1)+1,1)) 以上是數(shù)組公式,,需三鍵結(jié)束,,下拉。 |
|