Excel多条件查找:全部匹配时返回True/False值的实现方法
按角色校验必修课程完成状态的公式方案
核心逻辑:对每一行用户,先匹配其所属角色对应的必修课程范围,校验该范围内的完成标记是否全部为TRUE,任意一门未完成(标记为FALSE)则最终返回FALSE,全部完成返回TRUE。
全版本兼容通用公式
在H3单元格输入公式后,下拉填充至H6即可适配所有Excel版本:
=SUMPRODUCT((B$3:B$6=B3)*(C$3:F$6=FALSE)*($C$2:$F$2=VLOOKUP(B3,$B$10:$C$12,2,0)))=0
逻辑说明:
VLOOKUP(B3,$B$10:$C$12,2,0):匹配当前行用户所属角色对应的必修课程名称- 多条件相乘做筛选:统计「和当前用户同角色、属于该角色必修课、完成状态为FALSE」的记录条数
- 条数为0即代表无未完成的必修课程,返回
TRUE,否则返回FALSE
Excel 365/2021+ 简化公式
支持动态数组的版本可在H3输入单公式,自动溢出填充H3:H6全区域,无需手动下拉:
=BYROW(3:6,LAMBDA(r,LET(role,INDEX(B:B,r),req,XLOOKUP(role,B10:B12,C10:C12),AND(INDEX(r,,XMATCH(req,C2:F2)+2)))))
逻辑说明:
BYROW逐行遍历用户数据行XLOOKUP匹配角色对应必修课程,定位到该课程的完成状态列AND判断该列对应当前用户行的完成值是否为真,直接输出判定结果
基于IF+VLOOKUP的适配公式
如果需要沿用IF、VLOOKUP函数组合,可使用以下写法,H3输入后下拉填充:
=IF(COUNTIFS(B:B,B3,INDEX(C:F,0,MATCH(VLOOKUP(B3,B10:C12,2,0),C2:F2,0)),FALSE)=0,TRUE,FALSE)
逻辑说明:
- 用VLOOKUP获取当前角色对应的必修课程名,MATCH定位课程所在的完成状态列
- COUNTIFS统计同角色下该课程标记为FALSE的记录数,IF根据统计结果返回最终判定值
使用提示:请根据你表格实际的角色映射表区域、课程列起止位置调整公式内的单元格引用,避免匹配错位。
内容的提问来源于stack exchange,提问作者Siaris18
相关产品推荐
相关产品推荐

