Excel如何使用公式基于同一行两个条件提取B列对应值
解决方案
方法1:Excel 365/2021及以上版本(推荐,最简单)
使用XLOOKUP多条件匹配,可直接同时校验UserID和Cost_Priority两个匹配条件,不会带出优先级为0的记录。
假设源数据存放在Sheet1的A1:D8区域(表头在第1行,数据从第2行到第8行),结果表的UserID放在A列,A2为第一个待匹配的用户ID:
- 最高成本问题(结果表B2单元格)公式:
=XLOOKUP(1,(Sheet1!$A$2:$A$8=A2)*(Sheet1!$C$2:$C$8=1),Sheet1!$B$2:$B$8,"无对应问题") - 第二高成本问题(结果表C2单元格)公式:
=XLOOKUP(1,(Sheet1!$A$2:$A$8=A2)*(Sheet1!$C$2:$C$8=2),Sheet1!$B$2:$B$8,"无对应问题")
公式输入完成后,选中B2、C2单元格下拉填充即可批量完成所有用户的匹配。
方法2:Excel 2019及以下旧版本(兼容性最优)
使用INDEX+MATCH数组公式实现多条件匹配:
- 最高成本问题(结果表B2单元格)公式:
=IFERROR(INDEX(Sheet1!$B$2:$B$8,MATCH(1,(Sheet1!$A$2:$A$8=A2)*(Sheet1!$C$2:$C$8=1),0)),"无对应问题") - 第二高成本问题(结果表C2单元格)公式:
=IFERROR(INDEX(Sheet1!$B$2:$B$8,MATCH(1,(Sheet1!$A$2:$A$8=A2)*(Sheet1!$C$2:$C$8=2),0)),"无对应问题")
注意:旧版本Excel输入完公式后,需要按Ctrl+Shift+Enter组合键进行数组确认,否则会返回错误值。确认完成后下拉填充即可。
方法3:无代码操作(数据透视表)
如果不想写公式,可以用数据透视表快速生成目标结果:
- 选中整张源数据表,点击「插入」选项卡→「数据透视表」
- 透视表字段设置:行区域拖入
UserID,列区域拖入Cost_Priority,值区域拖入Problem_Description - 点击值区域的
Problem_Description,选择「值字段设置」,计算类型选「最大值」或「最小值」(每个用户同优先级仅对应1个问题,两类计算结果一致) - 最后删除透视表里列标签为0的列,将列标签1、2分别改为对应标题即可。
内容的提问来源于stack exchange,提问作者Eagle1
相关产品推荐
相关产品推荐

