我在计算列上运行 XLOOKUP 时遇到了一些问题:
在我的源表中,我有一个电话号码列表,其列类型设置为常规,输入为 1##########。这些值未计算。
在我的查找表中,我有相同的电话号码列表,格式为 (NNN)NNN-NNNN,然后我创建了一个列来正确格式化查找的电话号码:
="1" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"(",""),")",""),"-","")," ",""),".","")
这正确地产生了匹配,从视觉上看,似乎与我的源表(C)和查找表(F)匹配。
源表
查找表
但是,我没有看到使用此 XLOOKUP 的匹配项:
=XLOOKUP([@[Phone Number]],'Data'!F:F,'Data'!G:G,"No Match", 0,1)
作为一个简单的测试,如果我手动在 H 列中输入完全相同的数据并进行更改,XLOOKUP 就会起作用。
我尝试将两列格式化为“文本”和“常规”,但没有成功。Excel 中有没有办法说“嘿,此列是字符串,请按字符串处理?”
答案1
如果理解正确的话Phone Numbers
,Source Table
格式为数字/常规,而在Lookup Table
它被格式化为文本,因为附加内容使用-->1
连接起来。&
Ampersand
进一步调查,您可能会发现,Excel
默认情况下数字是,right aligned
而文本是,left aligned
除非您格式化了对齐方式,但从屏幕截图来看似乎并非如此,您也已经确认了Source
数据格式。此外,当您在 中输入数字时,Excel
除非事先格式化,否则它将显示为General
。
你需要做什么?
在empty string
-->内""
连接[Lookup_Value]
Source Table
应用如下所示的公式,它应该适合您:
• 单元格中使用的公式G4
=XLOOKUP(F4&"",B4:B8,C4:C8,"No Match",0,1)
以上也可以写成:
=XLOOKUP(F4:F5&"",B4:B8,C4:C8,"No Match",0,1)
在 OP 的上下文中,公式如下:
=XLOOKUP([@[Phone Number]]&"",'Data'!F:F,'Data'!G:G,"No Match", 0,1)
此外,如果您可以访问MS365
,我强烈建议您使用以下公式Person Account Mobile
代替SUBSTITUTE()
Lookup_Table
=1&CONCAT(TEXTSPLIT(A4,{"(",")","-"," ","."},,1))
如果将double unary
-->--
或1
乘以或除以或0
添加到上面的公式中,则[Lookup_Value]
不需要XLOOKUP()
接触和空字符串
笔记:显示的电话号码是随机创建的假号码,请根据您的需要更改参考和范围。