![为什么这个 Excel 公式返回两个不同的值?](https://linux22.com/image/1397048/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%20Excel%20%E5%85%AC%E5%BC%8F%E8%BF%94%E5%9B%9E%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E5%80%BC%EF%BC%9F.png)
我试图使用 Excel (2013) 查找值 1 是否出现在给定集合中(使用函数CHOOSE()
,如果是,则使用VLOOKUP()
函数直接在其右侧的单元格中打印该值。为什么这个公式本身相同,但会在不同的单元格中产生两个不同的结果?
=IF(CHOOSE(1, $A$4:$A$17) = 1, VLOOKUP(1, $A$4:$C$17, 2, FALSE), "?")
我的工作表中的单元格 V4 至 V7 都具有完全相同的公式(上面打印的公式),但它们返回的值不同。V4 的返回值是我想要的类型(即单元格 B4 的值,它是一个数字),但其他单元格返回的是"?"
。为什么会这样?我该如何解决?在此先感谢您的帮助。
答案1
假设范围内有这些值A4:A6
:
1
2
3
当你有CHOOSE(1, $A$4:$A$17)
。
excel 中的数组如果正常求值,将求出公式所在的相应行或列(视情况而定)。如果公式在第 4 行,则将CHOOSE(1, $A$4:$A$17)
得到CHOOSE(1, $A$4)
。在第 5 行,它将得到CHOOSE(1, $A$5)
。这是因为CHOOSE
通常不接受数组值。
如果要获取超出范围的列表$A$4:$A$17
,则必须将其作为数组公式输入,CHOOSE
并且由于它位于更大的公式中,因此这也适用。如果在插入公式后使用Ctrl++而不是单独按 ,您将看到它按预期工作。ShiftEnterEnter
答案2
我不清楚为什么你会CHOOSE
在这里使用函数,我建议你通常使用 来检查COUNTIF
,即
=IF(COUNTIF($A$4:$A$17,1)>0,VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")
....但在 Excel 2007(或更新版本)中,使用 IFERROR 函数可能更容易,如下所示:
=IFERROR(VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")
如果 1 出现在 ... 中,则这两个公式都将返回 VLOOKUP 的结果。A4:A17
否则?