
您能幫我滿足以下要求嗎?
我在 A 列和 B 列中維護了範圍。
| Column A | Column B | Column C |
| 1 | 10 | A |
| 15 | 20 | B |
| 21 | 30 | C |
現在我在另一列 E 中插入了一個數字,例如 17。 2 行,其C 列中的值為B。數字不屬於任何範圍。
我想知道是否有任何Excel公式可以用來獲得這種類型的輸出。我更喜歡使用公式而不是任何編碼。感謝您抽出時間在這方面指導我。
熱烈的問候,斯里達爾
答案1
是的,可以做到 - 您需要在表中添加一行才能使其工作。
我添加了這一行
| 0 | 0 | #N/A |
進入表格作為第一行,所以表現在佔據A1:C4。
我使用該INDEX
函數來決定需要返回哪一行。
為了計算該行,我用SUMPRODUCT
它來計算 INDEX 將使用的行。
完整的公式變為:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=D1),--(B1:B4>=D1),ROW(C1:C4)))
,以及要簽入的數值D1
運行公式D1包含17
:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=17),--(B1:B4>=17),ROW(C1:C4)))
=INDEX(C1:C4,SUMPRODUCT(--({0,1,15,21}<=17),--({0,10,20,30}>=17),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT(--({True,True,True,False}),--({False,False,True,True}),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT({1,1,1,0}),({0,0,1,1}),{1,2,3,4}))
=INDEX(C1:C4,(1*0*1 + 1*0*2 + 1*1*3 + 0*1*4))
=INDEX(C1:C4,3)
="B"
如果數字超出範圍,SUMPRODUCT 中將不存在該行值不等於 的部分0
,因此它將傳回範圍中的第一個值,即 #N/A。相同的公式,但帶有12
inD1:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=12),--(B1:B4>=12),ROW(C1:C4)))
=INDEX(C1:C4,SUMPRODUCT(--({0,1,15,21}<=12),--({0,10,20,30}>=12),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT(--({True,True,False,False}),--({False,False,True,True}),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT({1,1,0,0}),({0,0,1,1}),{1,2,3,4}))
=INDEX(C1:C4,(1*0*1 + 1*0*2 + 0*1*3 + 0*1*4))
=INDEX(C1:C4,0)
="#N/A"
這不是技術上的#不適用,它是所有可能答案的數組,但由於我們沒有將公式作為數組公式輸入,因此它只提供了第一個值