如何解决因多个数据源的名称拼写差异导致的 INDEX MATCH 错误?
How can I resolve INDEX MATCH errors caused by discrepancies in the spelling of names across multiple data sources?
我已经建立了一个 Google Sheets 工作簿,它通过手动输入 IMPORTHTML
和 IMPORTRANGE
综合来自几个不同来源的数据。填充数据后,我将使用 INDEX MATCH
过滤和比较信息并 RANK
每个数据集。
因为我有多个数据输入,所以我 运行 陷入了一个持续存在的问题,即来源之间的名字不完全相同,即使他们是同一个人。名字是主要的罪魁祸首(即 Mary Lou vs Marylou vs Mary-Lou vs Mary Louise),但一些带有特殊符号(元音变音、重音、波浪号)的姓氏也会导致错误。当 Sheets 无法识别匹配项时,INDEX MATCH
和 RANK
函数都会崩溃。
我想知道如何更好地自动统一数据,以便我的 Sheet 理解每次出现实际上是同一个人(或 "value")。
由于您无法直接编辑 IMPORTHTML
的结果,我设置了 "helper columns" 并使用 TRIM
和 SPLIT
等函数来尝试边走边修复实例,但似乎必须有一条更简单的路径。
感觉 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)))
我已经建立了一个 Google Sheets 工作簿,它通过手动输入 IMPORTHTML
和 IMPORTRANGE
综合来自几个不同来源的数据。填充数据后,我将使用 INDEX MATCH
过滤和比较信息并 RANK
每个数据集。
因为我有多个数据输入,所以我 运行 陷入了一个持续存在的问题,即来源之间的名字不完全相同,即使他们是同一个人。名字是主要的罪魁祸首(即 Mary Lou vs Marylou vs Mary-Lou vs Mary Louise),但一些带有特殊符号(元音变音、重音、波浪号)的姓氏也会导致错误。当 Sheets 无法识别匹配项时,INDEX MATCH
和 RANK
函数都会崩溃。
我想知道如何更好地自动统一数据,以便我的 Sheet 理解每次出现实际上是同一个人(或 "value")。
由于您无法直接编辑 IMPORTHTML
的结果,我设置了 "helper columns" 并使用 TRIM
和 SPLIT
等函数来尝试边走边修复实例,但似乎必须有一条更简单的路径。
感觉 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)))