2013-07-30 68 views
0

我有值的行成爲當前小區的小區 - 1,2,3,8,35,7,8,3,5,7,x找到最接近的條件

X就是我想要的公式是

我想以某種方式得到的值8是最接近X的行(在這種情況下不是第4行,但是第7行)

如果我使用match("8",A:A,0),我得到它找到的第一個匹配項。

如何找到與計算髮生的單元格最接近的匹配?

+0

所以,我收集你想要有最後一個「8」的位置? – Juliusz

+0

是的,這是我需要的 –

回答

4

您可以使用:

{=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

+3

嘿!很久以前,我不記得了,但是我在Ozgrid發佈了原始答案 - barry houdini = daddylonglegs! –

+1

請注意,由於「二進制搜索」的工作原理,它的工作原理與上述相同。 LOOKUP使用該方法,第三個參數爲1(或省略)的MATCH或第四個參數爲TRUE(或省略)的VLOOKUP。二進制搜索爲您提供快速查找,因爲它通過每次將搜索範圍分成兩部分進行搜索,預期值將被排序。這個[在此使用]的一個副作用是當沒有匹配...時選擇**最後的**號碼,因爲最後的號碼預期是最大的 –

4

如果你想最後比賽,你可以在A11

=MATCH(2,INDEX(1/(A1:A10=8),0))

[注意使用這個公式:如果值是數字那麼8 OK - 如果他們是文本格式的數字,那麼你需要「8」]

....或者你有計算單元格的任何一邊的值(所以最近可能是向上或向下)?

+2

'MATCH(2,'做什麼?2表示什麼? –

+0

真的沒什麼,你可以把任何數字,但1 – Juliusz

+0

@Julisz但0? – pnuts