
答案1
如所gns100
評論的,MATCH()
失敗是因為匹配的範圍不是單一列(或行)。在這裡使用XLOOKUP()
效果很好,但細節確實使它不適合,就像有時那樣。它遵循相同的基本方法,因為INDEX/MATCH
它具有相同的基礎知識:查找值、在哪裡查找該值、在哪裡找到要傳回的內容。
VLOOKUP()
可以做到這一點,如果出於某種原因你喜歡它。我相信,INDEX/MATCH
它適用於任何具有 的 Excel 版本VLOOKUP()
,因此透過顯示的小調整gns100
,當需要與舊版本相容時,您始終可以使用它。
VLOOKUP()
透過使用INDEX()
為其第二個參數建立一個虛擬表來完成此操作,該虛擬表僅包含查找列和結果列,並且按該順序。例如:
=VLOOKUP($I$14, INDEX(A9:D15, ROW(INDIRECT("1:"&ROWS(A9:D15)) ),{4,1}), 2, FALSE)
({4,1}
“數組常數”)告訴INDEX()
您首先返回第四列,第二列返回第一列,為您提供一個(虛擬)兩列查找表,VLOOKUP()
可以在其中“向右查找”以查找結果。所以它仍然“看起來正確”,但效果是它“看起來左邊”。
中間的那一位ROW(INDIRECT("1:"&ROWS(A9:D15))
只是獲取從“1”到任何值的序列的老式方法,因此它指定返回所有行。如今,一個簡單的SEQUENCE( ROWS(A1:D15) )
就可以了,但這不會回到過去XLOOKUP()
……它必須存在的原因是,當您直接使用數組常數來指定行或列(或某些其他用途中的“區域”)時,或者在計算過程中產生數組常數的任何內容,那麼Excel 要求完全指定其他參數,而不是僅使用,,
(行參數不指定任何內容)或,0,
(行參數為「0」),其中任何一個都指定「 ALL」行到Excel。
是的,舊學校很討厭。一定要愛XLOOKUP()
和FILTER()
!
您可以對行使用類似的技術,儘管組成略有不同,以創建INDEX()
一個自下而上、自上而下的虛擬表......最後一行現在是第一行,第一行現在是最後一行。這可以讓您找到“最新日期”以及您想要從下向上搜尋的類似內容。
所有這些都只是為了與舊版本相容,但只能XLOOKUP()
在不常見的情況下無法完成所需的操作。當然,現在所做的類似方法FILTER()
也只需要舊版的兼容性。
可以做的一件有趣的事情INDEX()
還沒有過時,無論如何也沒有過時(我認為新的數組處理函數也可能使這個過時),它可以在所有四種變體中轉置範圍,而不僅僅是左右變位-down ,反之亦然,就像TRANSPOSE()
.但事實上,您從未聽說過在數百萬個 Excel 幫助網站上這樣做,這可能意味著現實世界中永遠不需要它。