Excel中使用XLOOKUP与SEARCH匹配域名对应信息的技术问题
问题描述
我有存储在SharePoint且无法修改的主数据如下:
| 公司(Company) | 等级(Tier) | 域名(Domain) |
|---|---|---|
| Abc | Elite | abc.com, abc.com.uk, abc.co.in |
| Xyz | Professional | xyz.hk, xyz.com |
| Def | Elite | def.sa, def.com |
| Lmn | Elite | lmn.com, lmn.ca |
| fusion | Professional | fusiongbs.com, fusion.com |
现有提取的单个域名数据:
| 提取的域名(Fetched data) |
|---|
| abc.com.uk |
| xyz.com |
| def.sa |
| lmn.com |
| fusion.com |
需要根据提取的单个域名匹配获取对应的等级信息,尝试过VLOOKUP()、XLOOKUP()、MATCH()、XMATCH()等函数的多种变体(比如以下公式)但未得到正确结果:
=IF(SEARCH(F3,VLOOKUP("*"&D3&"*",$D$3:$D$7,1,0),1),XLOOKUP(F3,$D$3:$D$7,$C$3:$C$7," ",0,1))
解决方案
可以使用以下公式实现匹配(假设提取的域名在单元格F3,主数据的域名列范围为$D$3:$D$7,等级列范围为$C$3:$C$7):
=XLOOKUP(TRUE,ISNUMBER(SEARCH(F3,$D$3:$D$7)),$C$3:$C$7,"未匹配",0)
公式逻辑:
SEARCH(F3,$D$3:$D$7):遍历主数据的域名列,检查每个单元格是否包含提取的单个域名(支持逗号分隔的多值匹配)ISNUMBER(...):将SEARCH的查找结果转为布尔值,找到匹配返回TRUE,未找到则为FALSEXLOOKUP(TRUE,...):定位第一个匹配的单元格,返回对应的等级信息"未匹配":无匹配结果时的默认返回值,可根据需求调整
如果使用的是不支持XLOOKUP的旧版Excel,可改用INDEX+MATCH组合公式:
=INDEX($C$3:$C$7,MATCH(TRUE,ISNUMBER(SEARCH(F3,$D$3:$D$7)),0))
注意:旧版Excel输入该公式后需按
Ctrl+Shift+Enter以数组公式形式执行
内容的提问来源于stack exchange,提问作者Shreeuday Kasat
相关产品推荐
相关产品推荐

