【问题标题】:SUMPRODUCT using filter as criteriaSUMPRODUCT 使用过滤器作为标准
【发布时间】:2022-01-05 01:58:51
【问题描述】:

我想将除法(B 列)为“服务”的行的余额(I 列)相加。这个公式有效:

=SUMPRODUCT(($B7:$B500="SERVICE")*I7:I500)

...这让我很惊讶,因为我以前从未真正理解过 SUMPRODUCT。

现在,我想使用过滤器选择“服务”或 B 列的任何其他值,而不是简单地查找“服务”行。所以现在我需要公式来检测过滤器设置的形式。

我怀疑有一种方法可以提取 B 列中可见的内容。或者也许有一种方法可以使用 COUNTIF 和/或 SUBTOTAL。

【问题讨论】:

  • 您好。实际上,最简单的答案是说您应该使用替代聚合函数,如“SUBTOTAL”或“AGGREGATE”,因为它们能够忽略“隐藏”行,这是数据过滤的结果。这样,您不必担心在过滤器中选择的值是什么,并尝试基于该值执行计算 - 那些聚合函数会处理它。 (另外,如果在数据过滤器中选择了多个值,您会期望发生什么?)
  • 但是,我确实做了一些尝试(然后进行了更多调查)以确定所选过滤器值的难易程度(或者,假设至少是选择的第一个过滤器值,如果有的话)是倍数)。老实说,我自己过去并没有专门尝试过这样做.....事实证明,如果不添加额外的列或诉诸 VBA,这并不是一件容易的事。 Excel 的大多数函数(您可能认为是候选函数,例如 MIN 或 MAX)仅适用于数值,而不适用于 alpha。其他人可能有答案,但我不知道
  • 我认为 B 列只有一个过滤选项,但事实证明我错了。另外,我们也可以过滤其他列,所以整个问题没有实际意义。如果任何最终答案对某人有帮助,我会留下问题。

标签: excel array-formulas sumproduct


【解决方案1】:

据我了解,您当前的公式是有效的,但是您需要灵活地选择 B 列中的关键字。 如果这是正确的,我建议在一个单元格中创建一个数据验证列表,比如说“A1”,其中包含您希望拥有 SUMPRODUCT 的关键字。 公式修改如下:

=SUMPRODUCT(($B7:$B500=$A$1)*I7:I500)

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多