如何解决因多个数据源的名称拼写差异导致的 INDEX MATCH 错误?

How can I resolve INDEX MATCH errors caused by discrepancies in the spelling of names across multiple data sources?

我已经建立了一个 Google Sheets 工作簿,它通过手动输入 IMPORTHTMLIMPORTRANGE 综合来自几个不同来源的数据。填充数据后,我将使用 INDEX MATCH 过滤和比较信息并 RANK 每个数据集。

因为我有多个数据输入,所以我 运行 陷入了一个持续存在的问题,即来源之间的名字不完全相同,即使他们是同一个人。名字是主要的罪魁祸首(即 Mary Lou vs Marylou vs Mary-Lou vs Mary Louise),但一些带有特殊符号(元音变音、重音、波浪号)的姓氏也会导致错误。当 Sheets 无法识别匹配项时,INDEX MATCHRANK 函数都会崩溃。

我想知道如何更好地自动统一数据,以便我的 Sheet 理解每次出现实际上是同一个人(或 "value")。

由于您无法直接编辑 IMPORTHTML 的结果,我设置了 "helper columns" 并使用 TRIMSPLIT 等函数来尝试边走边修复实例,但似乎必须有一条更简单的路径。

感觉 IFS 可以工作,但我不知道如何集成它。还认为这可能需要一个脚本,我才刚刚开始研究。

这是我试图实现的目标和相应错误的简化示例:Sample Spreadsheet

第一个选项卡正在尝试从选项卡 2 和 3 中提取和 RANK 数据。摘要选项卡中的示例公式,第 3 行 (Amelia Rose):

Cell B3: =INDEX('Q1 Sales'!B:B, MATCH(A3,'Q1 Sales'!A:A,0))

Cell C3: =RANK(B3,$B:B,1)

Cell D3: =INDEX('Q2 Sales'!B:B, MATCH(A3,'Q2 Sales'!A:A,0))

Cell E3: =RANK(D3,$D:D,1)

对于如何将 'Q2Sales'!B3 的最佳索引作为 'Summary'!D3. 的正确值的任何见解,我将不胜感激 提前致谢 - Stack Overflow 上深思熟虑的答案让我走到了这一步!

要应对每一种可能的情况,请这样做:

=ARRAYFORMULA(IFERROR(VLOOKUP(LOWER(REGEXREPLACE(A2:A, "-|\s", )), 
 {REGEXEXTRACT(LOWER(REGEXREPLACE('Q2 Sales'!A2:A, "-|\s", )), 
 TEXTJOIN("|", 1, LOWER(REGEXREPLACE(A2:A, "-|\s", )))), 'Q2 Sales'!B2:B}, 2, 0)))