如何在Excel中对比两组飞机尾号的相似匹配(含缺失N情况)
飞机尾号匹配解决方案
你有两组飞机尾号数据:一组部分尾号缺失开头的"N"字母,另一组是系统内全量带"N"的尾号。需要找出两组中的匹配项来合并对应账户,但普通筛选或基础搜索公式要求完全匹配,没法处理这种相似文本的情况。
示例数据
| 无N的尾号 | 带N的尾号 |
|---|---|
| 72HC | N157UI |
| 32AF | N61651 |
| 157UI | N72HC |
| 34J7 | N8151L |
| N502MG | |
| N43SR |
方法1:Excel公式实现
假设无N尾号在A列,带N尾号在B列,在C列输入以下公式即可自动匹配对应带N尾号:
- 适用于Excel 365及以上版本的XLOOKUP:
=XLOOKUP("*"&A2,B:B,B:B,"无匹配") - 兼容旧版Excel的VLOOKUP:
=IFERROR(VLOOKUP("*"&A2,B:B,1,FALSE),"无匹配")
原理:用通配符*匹配任意前缀,将无N尾号拼在后面,就能精准匹配以"N"开头、后续字符完全一致的带N尾号。
方法2:Python脚本批量处理
如果数据量较大,用Python批量匹配更高效:
基础遍历版
# 整理两组数据(过滤空值) no_n_tails = [tail for tail in ["72HC", "32AF", "157UI", "34J7", "", ""] if tail] with_n_tails = ["N157UI", "N61651", "N72HC", "N8151L", "N502MG", "N43SR"] matches = [] for short_tail in no_n_tails: for full_tail in with_n_tails: # 检查带N尾号是否为"N"+无N尾号 if full_tail == f"N{short_tail}": matches.append({"无N尾号": short_tail, "匹配带N尾号": full_tail}) break # 打印匹配结果 for item in matches: print(f"{item['无N尾号']} → {item['匹配带N尾号']}")
高效集合版(适合大数据量)
# 整理数据 no_n_tails = [tail for tail in ["72HC", "32AF", "157UI", "34J7", "", ""] if tail] with_n_tails = ["N157UI", "N61651", "N72HC", "N8151L", "N502MG", "N43SR"] # 将带N尾号去掉首字母"N",存入集合用于快速查找 tail_collection = {tail[1:] for tail in with_n_tails} matches = [] for short_tail in no_n_tails: if short_tail in tail_collection: matches.append({"无N尾号": short_tail, "匹配带N尾号": f"N{short_tail}"}) # 输出结果 for item in matches: print(f"{item['无N尾号']} → {item['匹配带N尾号']}")
运行后会输出所有匹配对,比如72HC → N72HC、157UI → N157UI。
内容的提问来源于stack exchange,提问作者Micah
相关产品推荐
相关产品推荐

