基于结果名称与课程的Excel跨表分数匹配公式需求(含通配符)
Excel高效匹配公式解决方案
适用场景
将Sheet1中的结果分数,按「结果名称(支持前缀通配符)+课程名称」的组合条件匹配到Sheet2对应单元格;若Sheet1中匹配到的分数为空,Sheet2目标单元格自动留空。
方案1:Excel 365/2021及以上版本(推荐,简洁高效)
利用XLOOKUP函数实现多条件匹配,支持通配符逻辑,无需数组输入。
1. 精确匹配结果名称+课程名称(对应示例1)
在Sheet2目标单元格(如B3)输入公式:
=XLOOKUP(1,(Sheet1!C:C="communication")*(Sheet1!E:E="Comm 2010"),Sheet1!D:D,"")
- 逻辑:
(Sheet1!C:C="communication")*(Sheet1!E:E="Comm 2010")逐行判断两个条件是否同时成立,返回数组1(成立)或0(不成立);XLOOKUP找到第一个1对应的Sheet1!D:D值,无匹配或值为空时返回空字符串。
2. 前缀通配符匹配结果名称(对应示例2的information*)
在Sheet2目标单元格(如C5)输入公式(两种写法任选其一):
写法一(用LEFT函数判断前缀):
=XLOOKUP(1,(LEFT(Sheet1!C:C,LEN("information"))="information")*(Sheet1!E:E="Commm 3000"),Sheet1!D:D,"")
写法二(用SEARCH函数判断开头匹配):
=XLOOKUP(1,(ISNUMBER(SEARCH("^information",Sheet1!C:C,1)))*(Sheet1!E:E="Commm 3000"),Sheet1!D:D,"")
- 逻辑:通过
LEFT或带^的SEARCH实现「以information开头」的通配符匹配效果,再结合课程名称条件完成匹配。
方案2:旧版Excel(无XLOOKUP,用INDEX+MATCH)
利用数组公式实现多条件匹配,需按特定方式输入。
1. 精确匹配示例(Sheet2!B3)
=IFERROR(INDEX(Sheet1!D:D,MATCH(1,(Sheet1!C:C="communication")*(Sheet1!E:E="Comm 2010"),0)),"")
注意:输入公式后需按 Ctrl+Shift+Enter 完成数组公式确认(Excel 365/2021无需此操作)。
2. 前缀通配符匹配示例(Sheet2!C5)
=IFERROR(INDEX(Sheet1!D:D,MATCH(1,(LEFT(Sheet1!C:C,LEN("information"))="information")*(Sheet1!E:E="Commm 3000"),0)),"")
同样需按 Ctrl+Shift+Enter 确认(旧版Excel)。
为什么IF+AND组合会失败?
AND函数只能返回单个布尔值,无法对整列数据逐行判断条件是否成立;而用*(乘号)替代AND,可实现数组中的逻辑与运算,逐行检查两个条件是否同时满足,这是多条件匹配的关键。
内容的提问来源于stack exchange,提问作者user21062902
相关产品推荐
相关产品推荐

