我怎样才能缩短这个超长的 IF 和 COUNTIF 公式

我怎样才能缩短这个超长的 IF 和 COUNTIF 公式

我有一个超长的公式,我想说明如果 A2 是一个数字,那么将这个数字在四个不同的工作表中出现的次数相加。A2 的数字会根据我输入的内容而变化,而且我确实在另一个工作表上有这些特定数字的列表,但出于某种原因,它不允许我将其作为范围来执行?

所以实际上我希望它是这样的:“如果 A2 是这个数据集中的一个数字,那么就把这个特定数字在四页中出现的次数加起来。”

下面的公式似乎有效,但是太长而且重复性太强——如能得到任何帮助我将不胜感激:)

=IFS(A2=12,COUNTIF('WEEK 1'!A2:A300,"12")+COUNTIF('WEEK 2'!A2:A300,"12")+COUNTIF('WEEK 3'!A2:A300,"12")+COUNTIF('WEEK 4'!A2:A300,"12"),A2=100823,COUNTIF('WEEK 1'!A2:A300,"100823")+COUNTIF('WEEK 2'!A2:A300,"100823")+COUNTIF('WEEK 3'!A2:A300,"100823")+COUNTIF('WEEK 4'!A2:A300,"100823"),A2=103510,COUNTIF('WEEK 1'!A2:A300,"103510")+COUNTIF('WEEK 2'!A2:A300,"103510")+COUNTIF('WEEK 3'!A2:A300,"103510")+COUNTIF('WEEK 4'!A2:A300,"103510"),A2=103509,COUNTIF('WEEK 1'!A2:A300,"103509")+COUNTIF('WEEK 2'!A2:A300,"103509")+COUNTIF('WEEK 3'!A2:A300,"103509")+COUNTIF('WEEK 4'!A2:A300,"103509"),A2=257,COUNTIF('WEEK 1'!A2:A300,"257")+COUNTIF('WEEK 2'!A2:A300,"257")+COUNTIF('WEEK 3'!A2:A300,"257")+COUNTIF('WEEK 4'!A2:A300,"257"),

答案1

这需要 COUNTIF 和 INDIRECT 的组合,并与 SUMPRODUCT 相结合,在工作表中找到值。

怎么运行的:

  • 在工作表中输入工作表名称,如下所示。

在此处输入图片描述

  • 现在您可以命名单元格或在公式中使用单元格引用,就像我所做的那样。

  • 在任何单元格中创建下拉菜单,并输入您拥有的值列表12100823其他值。

  • 现在使用这个公式:

    =SUMPRODUCT((COUNTIF(INDIRECT("'"&$A$2:$A$5&"'!"&"$A$2:$A$300"),$C$1)))

  • 单元格引用A2:A5的位置年代姓 名。

  • 细胞A2:A300被重视C已计数。

  • 并且细胞C1rop Down,包含类似12和其他的搜索值。

  • 一旦您从下拉菜单中选择值,就会获得结果。

  • 如果您命名了单元格,则在公式中用命名范围A2:A5替换。&$A$2:$A$5&


注意:

  • 如果您不喜欢使用下拉菜单,则在范围中输入搜索值,并在第一个相邻的单元格中写入公式并向下填充。

在此处输入图片描述

  • 单元格 E2 中的公式:

=SUMPRODUCT((COUNTIF(INDIRECT("'"&$A$2:$A$5&"'!"&"$A$2:$A$300"),$D2)))

  • 您可以根据需要调整公式中的单元格引用。

答案2

您的方法应该可行,只是需要大量计算(这并不重要,因为需要覆盖四页中的每一页上的 300 个单元格),而且也很难创建和维护。

有另一种更简单的方法可以实现这一点。它将更易于创建和维护。

在 A2 中输入值后,您需要做两件事:

  1. 检查它是否在包含可接受数字列表的范围内。
  2. 执行计数。

您的 非常出色地完成了第二项任务COUNTIF()。您可能希望以不同的方式完成第一项任务。

IFS()目前,您正在通过构建一个对列表中的每个值进行测试的方法来测试该值是否出现在列表中。但是,如果您只是直接测试列表中的值,则可以IF()对整个过程使用一个简单的测试。

为了达到以下公式的目的,我设想您的列表位于 B1:B30。请根据需要进行更改。

=IF( ISERROR(VLOOKUP(A2,B1:B30,1,FALSE)), "Entry not in list", COUNTIF('WEEK 1'!A2:A300,A2)+COUNTIF('WEEK 2'!A2:A300,A2)+COUNTIF('WEEK 3'!A2:A300,A2)+COUNTIF('WEEK 4'!A2:A300,A2))

该公式首先检查 A2 中的值是否在列表中。如果值不在列表中,Excel 将给出错误,以便函数包装测试ISERROR()。如果存在错误(值不在列表中),公式将停止并向您报告“条目不在列表中”。

测试是VLOOKUP()检查列表中是否存在确切值。如果存在,则进入计数步骤。

这样,您就不需要用很长的IFS()篇幅覆盖列表中的每个值。而且,每次向该列表添加值时,您也不需要向公式中添加新的块。

此外,许多人痛恨INDIRECT()它,因为它是“不稳定的”,这意味着每次电子表格中的任何内容发生变化时,它都会重新计算。他们痛恨它,因为它会减慢速度。如今,几乎任何人都不关心这一点。也许,处理一百万个单元格。处理一千个单元格?你永远不会注意到它。

但它确实比你完美计算计数更复杂,因此更难做到。既然你可以更轻松地工作,为什么要更努力工作?“更复杂”的事情就是为什么我在不需要时避免它。

相关内容