为什么这个 Excel 公式返回两个不同的值?

Lor*_*rae 4 worksheet-function microsoft-excel microsoft-excel-2013

我正在尝试使用 Excel (2013) 来查找值 1 是否出现在给定的集合中(使用该CHOOSE()函数,然后,如果是,则使用该VLOOKUP()函数将单元格中的值直接打印到它的右侧。为什么会当公式本身相同时,此公式会在不同的单元格中产生两种不同的结果?

=IF(CHOOSE(1, $A$4:$A$17) = 1, VLOOKUP(1, $A$4:$C$17, 2, FALSE), "?")
Run Code Online (Sandbox Code Playgroud)

我的工作表中的单元格 V4 到 V7 都具有完全相同的公式(上面打印的公式),但它们返回不同的值。V4 的返回值是我想要的类型(即单元格 B4 的值,它是一个数字),而其他的则返回"?". 为什么会这样,我该如何解决?在此先感谢您的帮助。

Jer*_*rry 7

假设范围内有这些值A4:A6

1
2
3
Run Code Online (Sandbox Code Playgroud)

当你有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+ Shift+Enter插入公式后,而不是按Enter孤单。

  • 这是**“隐式交集”** - 请参阅此链接 http://www.myonlinetraininghub.com/excel-implicit-intersection ......或谷歌其他人 (2认同)

bar*_*ini 5

我不清楚你为什么会CHOOSE在这里使用函数,我建议你更经常地检查COUNTIF,即

=IF(COUNTIF($A$4:$A$17,1)>0,VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")
Run Code Online (Sandbox Code Playgroud)

....但在 Excel 2007(或更新版本)中,使用 IFERROR 函数可能更容易,如下所示:

=IFERROR(VLOOKUP(1,$A$4:$C$17,2,FALSE),"?")
Run Code Online (Sandbox Code Playgroud)

如果 1 出现在A4:A17....otherwise 中,这两个公式都将返回 VLOOKUP 的结果?