我有一个姓名列表,想将其与另一个姓名列表进行比较。但是,有些姓名包含一些特殊字符(特别是 # 和括号)。我注意到 XLOOKUP 似乎无法检测包含特殊字符的匹配项,但文档中没有任何内容表明某些字符是禁止使用的。
在下面的示例中,第一列包含完整的名称列表,第四列包含要比较的参考列表。第二列包含以下命令:
=XLOOKUP(A2,$D$2:$D$9,$D$2:$D$9,"not found",3)
可以看出,名称“Phoebe (#6)”和“Simeon (#)”同时出现在完整列表和查找列表(加粗)中,但它们返回“未找到”的结果。
非常感谢您的帮助!
请注意,我使用的是 Mac 版 Excel (16.96.1),所以我想知道这是否是 Mac 版本(Sonoma 14.6.1)的 bug,还是在 Windows 上也能重现。我还想知道这是否真的是一个 bug,还是有其他原因。
更新:请注意,由于我经常需要查找部分匹配,因此我需要使用 REGEX。为了简化示例,我原本没有考虑在原始示例中包含 REGEX 部分,但一些评论者指出,REGEX 导致了这个问题(例如,使用完全匹配选项可以正常工作)。REGEX 导致此问题的原因是什么?有什么解决方法可以将 REGEX 与特殊字符一起使用吗?
您的公式不适用于您的数据,因为它与括号 (
( )
) 不匹配。在正则表达式中,括号是括起捕获组的特殊字符。
如果您想要特别匹配它们,则必须在它们前面加上反斜杠来转义它们。
要修改公式以使其能够作为正则表达式工作,您可以使用类似以下内容:
该函数将用+
REDUCE
替换数组参数中的任何字符。\
the character
在这个例子中,数组中只有和
)
,但您可以根据需要添加其他字符。(
我不确定这对您的部分匹配有何帮助,但它确实解释了为什么您的正则表达式不起作用。
您正在使用 3 作为 XLOOKUP 的第 4 个参数,用于“REGEX 匹配”,您是否尝试过精确匹配,即
这对我来说可以按预期返回所有值