Excel中结合XLOOKUP按员工、项目、月份求和工时的公式求助
计算员工每月项目总工时的Excel公式方案
方法1:用SUMIFS直接求和(最简洁高效)
这是最适配你需求的方法,多条件一步到位:
假设你要在单元格(比如F2)计算指定员工(F1)、指定项目(G1)、2022年6月的总工时,公式如下:
=SUMIFS(D:D, A:A, F1, B:B, G1, C:C, ">="&DATE(2022,6,1), C:C, "<="&EOMONTH(DATE(2022,6,1),0) )
- 细节说明:
D:D是存放工时的列,A:A/B:B分别对应员工、项目列DATE(2022,6,1)生成目标月份的第一天,EOMONTH(...,0)自动算出当月最后一天,不用手动查月末日期
方法2:结合SUBTOTAL实现筛选后求和
如果需要支持手动筛选数据后仍能正确统计可见行的工时,用这个方案:
=SUMPRODUCT(SUBTOTAL(9,OFFSET(D2,ROW(D:D)-ROW(D2),0,1,1)), --(A:A=F1), --(B:B=G1), --(MONTH(C:C)=6), --(YEAR(C:C)=2022) )
- 细节说明:
SUBTOTAL(9,...)会自动忽略隐藏行,适配筛选场景--(条件)把“是/否”的逻辑判断转成1/0,SUMPRODUCT负责把符合所有条件的工时累加起来
用XLOOKUP组合实现的思路
XLOOKUP本身是查找函数,需要配合数组逻辑和SUM来完成求和:
=SUM(XLOOKUP(1,(A:A=F1)*(B:B=G1)*(MONTH(C:C)=6)*(YEAR(C:C)=2022),D:D,"",0,1))
- 细节说明:
(A:A=F1)*(B:B=G1)*...生成一个逻辑数组,符合所有条件的位置值为1,其余为0- XLOOKUP找到所有值为1的位置,返回对应的工时,最后用SUM求和
- 注意:Excel 365/2021版本直接回车即可,旧版需要按
Ctrl+Shift+Enter触发数组计算
内容的提问来源于stack exchange,提问作者SuperGremlin99
相关产品推荐
相关产品推荐

