我有值的行成爲當前小區的小區 - 1,2,3,8,35,7,8,3,5,7,x
找到最接近的條件
X就是我想要的公式是
我想以某種方式得到的值8是最接近X的行(在這種情況下不是第4行,但是第7行)
如果我使用match("8",A:A,0)
,我得到它找到的第一個匹配項。
如何找到與計算髮生的單元格最接近的匹配?
我有值的行成爲當前小區的小區 - 1,2,3,8,35,7,8,3,5,7,x
找到最接近的條件
X就是我想要的公式是
我想以某種方式得到的值8是最接近X的行(在這種情況下不是第4行,但是第7行)
如果我使用match("8",A:A,0)
,我得到它找到的第一個匹配項。
如何找到與計算髮生的單元格最接近的匹配?
您可以使用:
{=MATCH(2,1/(A1:A10=8))}
只記得它是一個數組的功能,所以CTRL + SHIFT + Enter必須使用
答案是基於MATCH函數的伎倆和行爲。我會允許自己的解釋從ozgrid複製:
神奇在這裏實際上是在MATCH函數比數組多。這裏使用了匹配函數的兩個有趣屬性:
1)使用MATCH,如果沒有找到匹配,那麼函數將返回數組中最後一個值的位置,所以如果你確實= MATCH(8 ,{1,2,3,4,5,6,7,6,5,4,3,2,1}),結果是= 13,因爲在陣列中沒有8找到
2)MATCH將返回最後一個值的位置,但不會返回錯誤(或空白值)的位置,所以如果有= MATCH(8,{1,2,3,4,#DIV/0!,#DIV/0!,7,6,5,4,3,#DIV/0 !,#DIV/0!}),結果爲= 11,因爲第11個位置的3是最後一個值在陣列
因此,daddylonglegs的公式檢查每個單元格對焦油在數組公式中獲得值(A1:A13 = B1),爲單元格匹配的位置給出一個帶有TRUE(或1)的數組,其餘部分使用FALSE(或0)。除此之外的結果是1,只要該數組爲真,並且#DIV/0!無論該陣列是否爲假。所以他的公式被評估爲
= MATCH(2,{#DIV/0!,1,#DIV/0 !,#DIV/0 !,#DIV/0 !,#DIV/0!,1, #DIV/0 !,#DIV/0 !,#DIV/0 !,#DIV/0!})
由於在該數組中找不到'2',並且最後一個值(1)被發現在第9個位置,MATCH返回9
嘿!很久以前,我不記得了,但是我在Ozgrid發佈了原始答案 - barry houdini = daddylonglegs! –
請注意,由於「二進制搜索」的工作原理,它的工作原理與上述相同。 LOOKUP使用該方法,第三個參數爲1(或省略)的MATCH或第四個參數爲TRUE(或省略)的VLOOKUP。二進制搜索爲您提供快速查找,因爲它通過每次將搜索範圍分成兩部分進行搜索,預期值將被排序。這個[在此使用]的一個副作用是當沒有匹配...時選擇**最後的**號碼,因爲最後的號碼預期是最大的 –
所以,我收集你想要有最後一個「8」的位置? – Juliusz
是的,這是我需要的 –