2016-03-03 12 views
1

在excel中,我有一個名稱列表,每個名稱都有一個與它們關聯的值。Excel:使用INDEX數組公式在min和max之間查找列表中的值

我也有最小值和最大值。

我想使用數組公式來查找列表中最小值和最大值之間的所有名稱。

首先我創建的努力只是找到所有的名字,其中值比最小值大的陣列式:

這使用以下公式中的細胞D5(複製下來到D10):

{=INDEX($A$1:$B$6,SMALL(IF($B$1:$B$6>=$E$1,ROW($B$1:$B$6)),ROW(1:1)),1)} 

然後我試圖更改這個公式找出與所述最小和最大之間的值的名字,在細胞F5如下:

{=INDEX($A$1:$B$6,SMALL(IF(AND($B$1:$B$6>=$E$1,$B$1:$B$6<=$E$2),ROW($B$1:$B$6)),ROW(1:1)),1)} 

但它不能正常工作,請參見下圖:

我該如何解決這個問題?我需要使用VBA嗎?

回答

3

改變數組公式:

=INDEX($A$1:$B$6,SMALL(IF(($B$1:$B$6>=$E$1)*($B$1:$B$6<=$E$2),ROW($B$1:$B$6)),ROW(1:1)),1) 

數組公式由於某種原因不喜歡AndOr funnctions,但你可以做*他們And+Or

這與TRUE/FALSE是布爾值這一事實有關。因此False = 0且True = 1,所以當值介於1 * 1 = 1或True時。如果它大於或小於現存值,則它將爲1 * 0 = 0或爲假。

+0

謝謝!真棒。 – Slab

+0

所以你乘他們而不是使用AND? excel的奧祕將讓我大吃一驚。 – Slab

+0

啊..非常感謝您的額外解釋。 – Slab