HI,大家好,我是星光。
眾所周知,使用Excel高效工作有四個(gè)必備的函數(shù):
IF條件判斷
VLOOKUP條件查詢
SUMIF條件求和
COUNTIF條件計(jì)數(shù)
其中VLOOKUP函數(shù)對(duì)工作的幫助最大,既簡(jiǎn)單又實(shí)用,就得了個(gè)稱號(hào)叫'大眾情人'。
但該函數(shù)有一個(gè)強(qiáng)規(guī)則,查找值必須在查找范圍的首列。如果遇到以下這種情況,它就不好用了。
如上圖所示,需要根據(jù)A:C里的數(shù)據(jù),查詢E列人名所在的班級(jí)信息。
查詢所需結(jié)果班級(jí)是A列,在查詢依據(jù)列姓名是B列,結(jié)果列在查詢列的左邊,換句話說(shuō),查找值就沒(méi)有在查找范圍的首列。
這個(gè)時(shí)候,通常建議大家使用
INDEX+MATCH函數(shù)組合:
=INDEX(A:A,MATCH(E2,B:B,0))
如果你所使用的Excel版本是365,用XLOOKUP也挺好:
=XLOOKUP(E2,B:B,A:A)
總之就不推薦使用VLOOKUP了。
有朋友說(shuō),拜托,這個(gè)問(wèn)題VLOOKUP也能解決好不好?何必要用INDEX呢?F2單元格輸入以下數(shù)組公式就可以了。
=VLOOKUP(E2,IF({1,0},B:B,A:A),2,0)
…
打個(gè)響指,你要這么想,那我就不困了。
有很多函數(shù)老人家,比如隨風(fēng)小妞,就很喜歡給新人講VLOOKUP函數(shù){1,0}的用法,內(nèi)心戲大概是這樣的:是不是覺(jué)得這個(gè)用法很奇妙?是不是重新認(rèn)識(shí)了VLOOKUP?嘿嘿嘿,我當(dāng)年也是這么覺(jué)得,我當(dāng)年……
奇妙與否咱先不說(shuō),要說(shuō)的是,無(wú)論編寫(xiě)體驗(yàn),還是運(yùn)算效率,VLOOKUP的這個(gè)用法都是渣的一匹啊。
編寫(xiě)方面,這家伙長(zhǎng)度較其它解法更長(zhǎng),其中IF函數(shù)的第1參數(shù)還用到了數(shù)組,對(duì)新人而言,計(jì)算邏輯的理解就不大友好。另外,作為數(shù)組公式,普通Excel版本還需要按數(shù)組三鍵才能正確運(yùn)行。
關(guān)鍵是運(yùn)行效率是真渣,寬面大碗都裝不下這么多渣。
它先用IF({1,0},B:B,A:A),構(gòu)建了兩列內(nèi)存數(shù)組,第1列是B列,第2列是A列;也就將B列和A列整列調(diào)換了順序,使查找值處在查找范圍的首列。
此時(shí),作為數(shù)組運(yùn)算,它會(huì)計(jì)算整列數(shù)據(jù),Excel一列有1048576個(gè)單元格,計(jì)算B列和A列,也就計(jì)算了1048576*2=200多萬(wàn)個(gè)單元格。
———這敗家娘們爺們,即便是越南盾,單元格也不能這么花啊。
而如果使用公式:
=INDEX(A:A,MATCH(E2,B:B,0))
雖然也使用了整列的計(jì)算范圍,但每個(gè)函數(shù)內(nèi)部都是純粹的單元格引用,不涉及數(shù)組運(yùn)算,就會(huì)享有系統(tǒng)的兩大能源補(bǔ)貼。
?,
INDEX和MATCH函數(shù)會(huì)自動(dòng)計(jì)算實(shí)際可用的單元格區(qū)域。依本例而言,雖然我們?cè)O(shè)置了MATCH函數(shù)的計(jì)算范圍是B:B列,但實(shí)際上,它只會(huì)計(jì)算B列存在數(shù)據(jù)的區(qū)域,也就是B1:B9。這有些類似以下VBA語(yǔ)句:
Sub t()
Intersect(Range('b:b'), ActiveSheet.UsedRange).Select
End Sub
?,
2016版開(kāi)始,微軟對(duì)
VLOOKUP/HLOOKUP/MATCH
XLOOKUP等函數(shù)
運(yùn)算機(jī)制進(jìn)行了強(qiáng)力優(yōu)化,從相同表區(qū)域查找多個(gè)列時(shí),將為所搜索的列范圍創(chuàng)建內(nèi)部緩存索引,在后續(xù)查找中,將重用這一緩存的索引。
簡(jiǎn)單的說(shuō),如果你所使用的Excel版本是2016及以上,當(dāng)你在其它單元格重復(fù)使用F2單元格的INDEX+MATCH函數(shù)時(shí),它不會(huì)重復(fù)從單元格區(qū)域里讀數(shù)據(jù),而是直接從緩存中獲取。
如此一來(lái),即便是計(jì)算十幾萬(wàn)行數(shù)據(jù),只要你的Excel版本給力,也是可以高效完成的。
——這兒插句題外話,很多朋友一談到Excel函數(shù)運(yùn)行很卡頓,就說(shuō)要換新電腦,這就很敗家老爺們。攤手,大哥,這事大可不必,咱們還是先升級(jí)下Excel版本再說(shuō),省下的錢給老婆大人買個(gè)新搓衣板不香了嗎?
……
最后,綜上所述,
還是推薦使用INDEX/XLOOKUP,
真·別用VLOOKUP(IF({1,0}...)這種花里胡哨作用不大自殘度卻很高的技巧了。
沒(méi)了,揮揮手說(shuō)再見(jiàn),沒(méi)關(guān)注的朋友左上角點(diǎn)個(gè)關(guān)注,已關(guān)注的朋友右下角點(diǎn)個(gè)贊,明天咱們繼續(xù)來(lái)聊Excel這些事兒。
聯(lián)系客服