SUMPRODUCT函数计算异常求助:跨双工作表多条件求和需求实现问题
SUMPRODUCT函数计算异常求助:跨双工作表多条件求和需求实现问题
嗨,我来帮你搞定这个跨双工作表的多条件求和问题!先把你的需求再捋一遍确认下:你要统计同时在Sheet1和Test工作表中存在的名字,而且得满足两个状态条件——Sheet1里对应名字的状态是「Intake Completed」,Test表里对应名字的状态是「Yes」,对吧?
先整理下你提供的样本数据
Sheet1 数据
| 名称 | 状态 |
|---|---|
| D | Intake Completed |
| A | Intake Completed |
| C, D | Intake Completed |
| P | Not |
| Z | Intake Completed |
Test 工作表数据(按需求逻辑补全结构)
| 名称 | 状态 |
|---|---|
| A | Yes |
| D | Yes |
| Z | No |
| P | Yes |
推荐用SUMPRODUCT实现的公式(适配你的需求)
假设Sheet1的名称列是A列,状态列是B列;Test工作表的名称列是A列,状态列是B列,直接用下面的公式就能计算符合所有条件的记录数:
=SUMPRODUCT( --(ISNUMBER(MATCH(Sheet1!A:A, Test!A:A, 0))), --(Sheet1!B:B="Intake Completed"), --(VLOOKUP(Sheet1!A:A, Test!A:B, 2, FALSE)="Yes") )
公式各部分拆解说明
我给你拆解开每个条件的作用,方便你根据自己的实际列号调整:
--(ISNUMBER(MATCH(Sheet1!A:A, Test!A:A, 0))):
用MATCH函数检查Sheet1里的每个名字是否在Test表中存在,ISNUMBER把匹配结果转成TRUE/FALSE,再用--把布尔值转成1(存在)或0(不存在),作为第一个判断条件。--(Sheet1!B:B="Intake Completed"):
判断Sheet1当前行的状态是否是「Intake Completed」,同样转成1/0的数值,作为第二个条件。--(VLOOKUP(Sheet1!A:A, Test!A:B, 2, FALSE)="Yes"):
用VLOOKUP找到Test表里对应名字的状态值,判断是否为"Yes",转成1/0的数值,作为第三个条件。- SUMPRODUCT会把三个条件对应的数组相乘后求和,最终得到同时满足所有条件的记录总数。
额外注意事项
- 如果你的实际列号不是A/B,比如Sheet1的名称在C列、状态在D列,记得把公式里的
Sheet1!A:A改成Sheet1!C:C,Sheet1!B:B改成Sheet1!D:D,Test表的列号同理调整。 - 针对Sheet1里的「C, D」这种包含多个名字的行:如果需要把这行拆分成C和D分别判断是否符合条件,那上面的公式就不够用了,需要加名字拆分的逻辑(比如用FILTERXML函数拆分逗号分隔的名字),你可以告诉我你的具体要求,我再帮你调整公式。
备注:内容来源于stack exchange,提问作者Half Jesus
相关产品推荐
相关产品推荐

