excel查找定位:INDEX函數(shù)——精確制導(dǎo)導(dǎo)彈

編按:這是部落窩函數(shù)課堂第3課,不容錯過,因為你將認(rèn)識INDEX,函數(shù)中的精確導(dǎo)彈,最強大的瘸子!

上回書說到函數(shù)哲學(xué)家MATCH函數(shù)。今天我們主要說說INDEX函數(shù)!INDEX也是查找家族的一員,由于他強大的坐標(biāo)定位功能,有時候VLOOKUP都是要靠邊站呢!
一、認(rèn)識INDEX函數(shù)
Index函數(shù):在給定的單元格區(qū)域中,返回特定行列交叉處單元格的值或引用。
函數(shù)結(jié)構(gòu):index(單元格區(qū)域,行號,列號)
區(qū)域,行號,列號,很像通過坐標(biāo)瞄準(zhǔn)打靶呀。就像下面動圖這樣,找到列,找到行,單擊就打中了!

我們想找到“囡”,可以看到其坐標(biāo)是行4,列3。

所以公式:=INDEX(B2:G11,4,3)就能得到“囡”。

二、INDEX函數(shù)基礎(chǔ)用法
1.單行、單列中提取數(shù)值:只需一個坐標(biāo)值
如果給定的區(qū)域是單行或者單列,那坐標(biāo)就不需要兩個數(shù)字了,只需要一個即可。
譬如我們現(xiàn)在需要在F17中從A17:A21中獲得“李惠”。
輸入公式:=INDEX(A17:A21,2)即可。

又譬如我們需要在G17中從A18:D18中取得李惠的基本工資。
輸入公式:= INDEX(A18:D18,4)即可。

2.從一個多行多列區(qū)域提取數(shù)值:必須行列兩個坐標(biāo)值
這點就不列舉了。前方找“囡”字就是這樣的。
從上面的例子可以看出,INDEX通過坐標(biāo)返回數(shù)值,像精確制導(dǎo)的導(dǎo)彈,指哪打哪(返回哪)。不過,純粹的人工查坐標(biāo)再輸入坐標(biāo),太不符合“現(xiàn)代化”了。實際操作中,數(shù)據(jù)往往都是幾十列,幾十行甚至上萬行的都有,這個時候我們再根據(jù)需要人工去查坐標(biāo)輸入坐標(biāo),就太不現(xiàn)實了。所以INDEX需要助手,需要組團才能打天下。
三、INDEX實戰(zhàn)用法
1.與小助手COLUMN和ROW組團:實現(xiàn)半自動查找取值
(1)與COLUMN組團可以連續(xù)返回同行多個數(shù)據(jù)
譬如我們需要從表中連續(xù)獲取工號C23的姓名、年齡、入職時間。

在數(shù)據(jù)區(qū)域A17:E21中,工號C23位于第3行,姓名、年齡、入職時間的列數(shù)從左到右是分別是2、3、4。我們可以用COLUMN(B1)來取代2、3、4實現(xiàn)半自動效果。公式如下:
=INDEX($A17:$E21,3,COLUMN(B1))
然后右拉填充即可。

得到的入職時間是數(shù)字,修改格式為短日期即可。
(2)與ROW組團可以連續(xù)返回同列多個數(shù)據(jù)
譬如下面,我們用公式:=INDEX(A$17:E$21,ROW(A3),2)下拉填充獲得三個工號的姓名。

(3)與COLUMN和ROW同時組團
譬如我們可以用公式:=INDEX($A$17:$E$21,ROW(A3),COLUMN(B1))右拉下拉填充獲得工號C23、C08、C10的姓名、年齡、入職時間。

通過與COLUMN和ROW組團,實現(xiàn)了半自動效果。只要是連續(xù)、有規(guī)律的取值,都可以用INDEX+ROW+COLUMN實現(xiàn)。
譬如我們需要隔行隔列取值,獲得工號C15、C23、C10的姓名、入職時間。公式是:
=INDEX($A$17:$E$21,ROW(A1)*2-1,COLUMN(A1)*2)
然后右拉下拉填充即可。

半自動比完全的人工查坐標(biāo)輸入坐標(biāo)簡便多了,但之所以叫半自動那就是還需要人工去尋找數(shù)據(jù)的規(guī)律。如果取值的數(shù)據(jù)規(guī)律復(fù)雜或者沒有規(guī)律,我們就無法半自動了。這個時候,就需要與大助手MATCH組團進行全自動工作。
2.與大助手MATCH組團:實現(xiàn)全自動查找取值
(1)INDEX+MATCH組團
下面的數(shù)據(jù)查找規(guī)律是亂的,我們不用自己去找規(guī)律,把一切都交給MATCH就好了。

在C28中輸入公式:
=INDEX($A$17:$E$21,MATCH($B28,$A$17:$A$21,0),MATCH(C$27,$A$16:$E$16,0))
然后右下下拉填充公式即可。

用MATCH函數(shù)根據(jù)條件在固定區(qū)域中查詢行、列位置完全取代了人工查找坐標(biāo)或者數(shù)據(jù)規(guī)律,實現(xiàn)了全自動。對MATCH函數(shù)陌生的伙伴可以查看部落窩教育教程《MATCH:函數(shù)哲學(xué)家,找巨人做伴。新出道必學(xué)!》。
(2)INDEX+MATCH與VLOOKUP+MATCH的區(qū)別
還記得《MATCH:函數(shù)哲學(xué)家,找巨人做伴。新出道必學(xué)!》中INDEX+MATCH與VLOOKUP+MATCH的比較問題嗎?
上面的查詢我們也可以用VLOOKUP+MATCH實現(xiàn)。輸入公式:
=VLOOKUP($B28,$A$17:$E$21,MATCH(C$27,$A$16:$E$16,0),0)
右拉下拉填充即可。

從公式長度來說,VLOOKUP+MATCH比INDEX+MATCH簡潔。那我們?yōu)楹芜€需要INDEX+MATCH呢?原因就在于INDEX函數(shù)只要收到行列坐標(biāo)值就可以查到數(shù)據(jù),根本不存在什么正向查找、反向查找的區(qū)別。VLOOKUP就不行了,默認(rèn)情況下它只能實現(xiàn)正向查找,也就是在查找區(qū)域里只能是從左往右查找,而不能從右往左查找。VLOOKUP要想實現(xiàn)從右往左的反向查找,就需要借助IF函數(shù)或者CHOOSE函數(shù)構(gòu)建新的查找區(qū)域。
譬如我們需要通過姓名查工號,如下:

采用INDEX+MATCH組合直接寫公式:=INDEX(A$17:B$21,MATCH(G17,B$17:B$21,0),1),然后下拉即可。

如果用VLOOKUP查找,因為是反向查找,就需要用IF函數(shù)重新構(gòu)建查找區(qū)域,公式就變成:
=VLOOKUP(G17,IF(,B$17:B$21,A$17:A$21),2,0)

所以,比較起來,正向查找的時候,用INDEX+MATCH和VLOOKUP+MATCH都可以,VLOOKUP+MATCH相對更簡潔;反向查找的時候,則用INDEX+MATCH最簡潔,尤其是反向查找區(qū)域有三列、四列數(shù)據(jù)的時候,INDEX+MATCH是最佳選擇。
好了,回答了函數(shù)課堂2中的問題后,我們繼續(xù)看INDEX的實用組團。
3.與特邀嘉賓SMALL和IF加上大小助手共同組團:實現(xiàn)一對多查找
組團后的公式格式是=INDEX(查找區(qū)域,SMALL(IF(),ROW()),MATCH())
譬如下方的動圖所展示的那樣:

公式很長:
=INDEX($A$2:$D$21,SMALL(IF($C$2:$C$21=$F$2,ROW($1:$20),99),ROW(A1)),MATCH(F$3,$A$1:$D$1,0))
套上防錯的IFERROR函數(shù),就更長了:
=IFERROR(INDEX($A$2:$D$21,SMALL(IF($C$2:$C$21=$F$2,ROW($1:$20),99),ROW(A1)),MATCH(F$3,$A$1:$D$1,0)),"")
這樣的組合公式,我們又常稱它為萬金油公式,主要用于一對多的查找。公式的詳細(xì)解析請看部落窩教育教程《熬夜加班發(fā)際線后移?誰讓你不會Excel萬金油公式!【Excel教程】》。
Ok,INDEX的實戰(zhàn)用法我們就介紹這么多。INDEX函數(shù)具有利用坐標(biāo)精確取值的優(yōu)勢,但自身缺少根據(jù)條件自動查找坐標(biāo)的功能,是個瘸子,所以實戰(zhàn)中它需要助手協(xié)助來查找坐標(biāo)。它是函數(shù)中的精確制導(dǎo)導(dǎo)彈,它是瘸子,一個強大的瘸子!
****部落窩教育-excel精確定位****
原創(chuàng):壹仟伍佰萬/部落窩教育(未經(jīng)同意,請勿轉(zhuǎn)載)
更多教程:部落窩教育(www.itblw.com)
微信公眾號:exceljiaocheng