如何结合SUMIFS与VLOOKUP/INDEX函数统计指定代理数据?
结合SUMIFS与VLOOKUP/INDEX实现指定条件的统计
当然可以结合这些函数完成需求,以下是基于常见表结构的具体解法:
前提假设(可根据实际表结构调整)
- 表1:存储代理基础信息(如A列=代理ID,B列=代理名称/验证字段)
- 表2:存储每日记录(如A列=代理ID/名称,B列=日期,C列=状态「Y/N」)
- 目标:统计代理ID为9、6、5、1、3在
202X-01-01至202X-01-04期间的「Y」「N」数量
场景1:表2直接用代理ID,无需表1映射(仅统计指定ID)
直接用SUMIFS结合数组参数批量统计:
统计「Y」的数量
=SUM(SUMIFS(表2!C:C,表2!A:A,{9,6,5,1,3},表2!B:B,">="&DATE(202X,1,1),表2!B:B,"<="&DATE(202X,1,4),表2!C:C,"Y"))
统计「N」的数量
把公式中的"Y"替换为"N"即可:
=SUM(SUMIFS(表2!C:C,表2!A:A,{9,6,5,1,3},表2!B:B,">="&DATE(202X,1,1),表2!B:B,"<="&DATE(202X,1,4),表2!C:C,"N"))
注:Excel 2019及更早版本需按
Ctrl+Shift+Enter执行数组输入;365/2021版本直接回车即可。
场景2:表2用代理名称,需通过表1匹配代理ID
用VLOOKUP将目标代理ID映射为名称,再传入SUMIFS统计:
统计「Y」的数量
=SUM(SUMIFS(表2!C:C,表2!A:A,VLOOKUP({9,6,5,1,3},表1!A:B,2,FALSE),表2!B:B,">="&DATE(202X,1,1),表2!B:B,"<="&DATE(202X,1,4),表2!C:C,"Y"))
统计「N」的数量
同样替换"Y"为"N":
=SUM(SUMIFS(表2!C:C,表2!A:A,VLOOKUP({9,6,5,1,3},表1!A:B,2,FALSE),表2!B:B,">="&DATE(202X,1,1),表2!B:B,"<="&DATE(202X,1,4),表2!C:C,"N"))
场景3:仅统计表1中存在的目标代理
如果需要确保统计的代理必须在表1中存在(过滤无效ID),用COUNTIF做合法性校验:
=SUM(SUMIFS(表2!C:C,表2!A:A,IF(COUNTIF(表1!A:A,{9,6,5,1,3}),{9,6,5,1,3}),表2!B:B,">="&DATE(202X,1,1),表2!B:B,"<="&DATE(202X,1,4),表2!C:C,"Y"))
关键注意事项
- 确保表2的日期为Excel可识别的日期格式(而非纯文本),否则日期条件会失效
- 若表1存在重复代理ID,需先清理重复数据,避免匹配错误
- 公式中的
202X请替换为实际年份
内容的提问来源于stack exchange,提问作者Harvey
相关产品推荐
相关产品推荐

