Excel:实现多选下拉列表的Vlookup等效去重合并功能
实现多选下拉列表对应去重地区的公式方案
假设你的数据结构如下:
- Lookup工作表:A列存国家名称,B列存对应地区(无表头)
- 数据输入工作表:多选下拉列表所在单元格为
D2(分隔符为中文顿号、)
适用于Excel 365/2021(动态数组版本)
直接使用以下公式即可实现需求:
=TEXTJOIN("、",TRUE,UNIQUE(XLOOKUP(TEXTSPLIT(D2,"、"),Lookup!A:A,Lookup!B:B,"",0)))
公式拆解:
TEXTSPLIT(D2,"、"):将多选单元格中的国家按顿号拆分,生成单个国家的数组XLOOKUP(...):根据拆分后的国家数组,批量查找对应的地区,返回地区数组UNIQUE(...):对地区数组进行去重处理,避免同一地区重复显示TEXTJOIN("、",TRUE,...):将去重后的地区用顿号连接,TRUE参数会自动忽略空值
适用于旧版Excel(无动态数组函数)
旧版Excel没有TEXTSPLIT和UNIQUE,可以用FILTERXML替代拆分,再结合数组公式实现去重:
=TEXTJOIN("、",TRUE,IFERROR(INDEX(Lookup!B:B,MATCH(0,COUNTIF($G$1:G1,Lookup!B:B)+IF(ISNUMBER(MATCH(Lookup!A:A,FILTERXML("<t><s>"&SUBSTITUTE(D2,"、","</s><s>")&"</s></t>","//s"),0)),0,1),0)),""))
注意:输入公式后需按Ctrl+Shift+Enter触发数组计算,且公式中的辅助单元格$G$1:G1需保证是空白单元格(如果公式放在H2,就用$G$1:G1,避免循环引用)
关键部分说明:
FILTERXML("<t><s>"&SUBSTITUTE(D2,"、","</s><s>")&"</s></t>","//s"):通过XML解析方式拆分多选的国家内容COUNTIF($G$1:G1,Lookup!B:B):记录已输出的地区,实现去重IF(ISNUMBER(MATCH(...))):筛选出选中国家对应的地区
注意事项
- 确保Lookup工作表的A列(国家)没有重复值,一个国家对应唯一地区
- 如果下拉列表的分隔符是英文逗号,需将公式中的
"、"替换为"," - 旧版Excel的数组公式需严格按
Ctrl+Shift+Enter输入,否则无法正常计算
内容的提问来源于stack exchange,提问作者InesGuardans
相关产品推荐
相关产品推荐

