【问题标题】:How to make a VLOOKUP formula conditional in Excel?如何在 Excel 中使 VLOOKUP 公式有条件?
【发布时间】:2016-01-21 14:21:29
【问题描述】:

我有一个包含多个工作表和大量数据的大型 Excel 工作簿。每第三张纸是前两组的混合物。我设置了以下公式来从每个工作表中提取数据,将它们相加,然后在第三个工作表中呈现:

=SUM(VLOOKUP($A7,'worksheet 1'!$A:$F,2,FALSE)+VLOOKUP($A7,'worksheet 2'!$A:$F,2,FALSE))

这可以按预期工作,除非列 A 值在一个源工作表中,但不在另一个源工作表中。然后,我收到“值不可用”的 #N/A 错误。

我想要做的是,如果第一个工作表中不存在列 A 值,则 excel 会忽略该 VLOOKUP 请求并简单地从第二个工作表中提取数据(反之亦然)在#2但不是#1)。

如果 VLOOKUP 不适合使用,我可以更改它。我有一个用于构建此查询的示例表,这就是他们将其组合在一起的方式。

我不是 Excel 专家,也从未使用过 Access,所以我边做边学。感谢您提供任何帮助!

【问题讨论】:

  • 你试过iferror吗?
  • 正如@findwindow 所说,用IFERROR(...,0) 包装两个vlookup 也是一个注释。如果您使用 sum 函数,则不需要 +,但在两者之间放置一个 ,。如果您使用的是+,则没有理由使用SUM() 包装器。
  • 谢谢 - 不知道“iferror”声明。我会查找并修改,看看是否能解决问题。
  • 感谢@findwindow 和 Scott Craner,它就像一个魅力!

标签: excel


【解决方案1】:

由于您使用的是数字,因此您实际上可以使用多个 sumif 语句。

我建议如下:

=SUM(SUMIF('worksheet 1'!$A:$A,$A7,'worksheet 1'!$B:$B), SUMIF('worksheet 2'!$A:$A,$A7,'worksheet 2'!$B:$B))

SUMIF 速度更快,不会在整个范围内查找,如果在 A7 中没有找到值,它会简单地返回 0。

我希望这会有所帮助。

更新

简单的例子。假设我们有 2 张纸,其中有一列,我们想获取该总单元格的值:

您可以将 2 VLOOKUP forumale 相加,或者您可以使用 SUMIF,如下所示:

=SUM(SUMIF(Sheet1!$A:$A,$A$7,Sheet1!$B:$B),SUMIF(Sheet2!$A:$A,$A$7,Sheet2!$B:$B))

上面只是说:在 sheet1 中的 $A:$A 范围内的单元格 A7 中查找值,并返回 $B:$B 范围内同一行中的值,并在 sheet2 中执行相同操作,然后将两者相加。

请注意,SUMIF 实际上会将一个范围内的所有结果相加,因此如果 Sheet1!$A:$A 中有 2 个总数,那么它将把它们都相加。在某种程度上,这与VLOOKUP 将做的相反:一旦找到包含该值的第一行,它将停止。 SUMIF 不会停止。

上例中想要的结果是 208,这就是你应该得到的结果。

【讨论】:

  • 我不熟悉 SUMIF,但如果它只适用于数字,我不确定它是否适用于这种情况? A2中的值实际上是文本(一个国家名称),而创建的公式是为了在不同的工作表中找到相同的国家名称,然后拉取相关数据。被拉取和添加的数据是数字,但查找的是文本。
  • @LMKWeb:如果所需的输出是文本,SUMIF 将不起作用。如果所需的输出是数字,则上面的示例将起作用。我已经用演示更新了答案。请注意,在将数字存储为文本的某些情况下,公式将不起作用。
猜你喜欢
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多