首页 > 解决方案 > 更新 SUMIF 公式以支持过滤数据

问题描述

我有一个每个日期记录的时间表(还有一堆其他在这里不相关的信息)

logTable
Date - Project - other stuff - Hours
1 Jul - X - ... - 3 hrs
1 Jul - Y - ... - 2 hrs
2 Jul - X - ... - 4 hrs
etc.

然后我有一个计算每天时间的公式:

请注意,K3 是计算每天时间的期间(即星期一)的开始。

=SUMIF(logTable[[#All],[Date]],"="&K3,logTable[[#All],[Hours]])

用简单的英语来说,这将是“向我显示日期为 X 的所有行的总小时数” - 我需要的是“向我显示所有当前可见的总小时数,而不是日期 X 的过滤行”

这是一个基本的时间记录电子表格。此特定部分的目的是显示选定周每天的时间量,按各种标准过滤。

不幸的是 SUMIF 似乎不支持过滤表。

如何更新该公式,以便它计算每天的时间,但仅适用于 logTable中未过滤的行?例如,我可能想按项目 X 过滤我的表,并让输出更新以反映这一点(请注意,这只是一个示例,表可能会以许多其他方式过滤 - 解决方案需要支持表过滤)。

这里有很多类似的问题,但我无法提出基于任何问题的解决方案。我认为部分困惑是我使用的是表名和列名,并且大多数解决方案似乎都使​​用范围和偏移量,我不知道如何与命名表一起使用。

标签: excelsubtotal

解决方案


有很多方法可以做到这一点。这是一个选择

  1. 更改您的公式以使用 SumIFs 而不是 SumIF,然后您可以添加更多条件。

    =SUMIFS(logTable[hours],logTable[date],G2,logTable[project],G3)

  2. 使用 SubTotal 并过滤表。小计只会计算可见单元格

    =SUBTOTAL(9,logTable[hours])

  3. 使用 Office 365 Excel 提供的新 Filter() 函数。

    =SUM(FILTER(logTable[hours],(logTable[date]=G2)*(logTable[project]=G3)))

在这些示例中,日期位于单元格 G2 中,项目位于单元格 G3 中。调整以适应。


推荐阅读