excel - 更新 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 过滤我的表,并让输出更新以反映这一点(请注意,这只是一个示例,表可能会以许多其他方式过滤 - 解决方案需要支持表过滤)。
这里有很多类似的问题,但我无法提出基于任何问题的解决方案。我认为部分困惑是我使用的是表名和列名,并且大多数解决方案似乎都使用范围和偏移量,我不知道如何与命名表一起使用。
解决方案
有很多方法可以做到这一点。这是一个选择
更改您的公式以使用 SumIFs 而不是 SumIF,然后您可以添加更多条件。
=SUMIFS(logTable[hours],logTable[date],G2,logTable[project],G3)
使用 SubTotal 并过滤表。小计只会计算可见单元格
=SUBTOTAL(9,logTable[hours])
使用 Office 365 Excel 提供的新 Filter() 函数。
=SUM(FILTER(logTable[hours],(logTable[date]=G2)*(logTable[project]=G3)))
在这些示例中,日期位于单元格 G2 中,项目位于单元格 G3 中。调整以适应。
推荐阅读
- amazon-web-services - 使用开放连接在 AWS 中轮换 RDS 密钥
- javascript - AHK GUI 日期时间默认设置
- javascript - 替换文件中的多个变量
- angular - 如何滚动到 PrimeNG TurboTable 组件的最后一行
- javascript - 导出为 PDF 时拆分过大的图像
- cuda - 为什么我们在使用 __syncthreads 时不需要使用 volatile 变量
- java - 如何使 graphql-java-annotations 将 getters 方法识别为字段名(没有 get)
- c# - C# 对同一个 WebService 使用不同的端点
- java - Android(Java):使用接口和更少重复的 DRYer 方法
- asp.net-core-mvc - 身份框架 ASP.NET Core 仅允许 @company.com 注册