我有诸如 4BU 之类的数字,可以通过以下公式正确处理:
=IF($B8<>"";VLOOKUP("*"&$B8&"*";Sheet1!$A:$J;1;FALSE);"")
如果找到该号码,它会显示出来
但是我也有像 578 这样的数字,只输出 #N/A。它们都被格式化为文本(此示例中为 B8 和 A:J),但它们的处理方式不同。
我注意到,当我从公式中去除通配符时,没有字母的数字会起作用,但这会使公式变得无用。我该如何解决这个问题?
答案1
以数组格式使用:
=IF($B8<>"";INDEX(Sheet1!$A1:$J100;MATCH("*"&$B8&"*";Sheet1!$A1:$A100&"";0);1);"")
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter。如果操作正确,Excel 会绕过{}
公式。
另外,作为数组公式,引用需要限制在数据集中,而不是整个列。我只引用了前 100 行,请将其更改为您的数据集。
答案2
您的 VLookup 公式
=IF($B8<>"";VLOOKUP("“&$B8&”";Sheet1!$A:$J;1;FALSE);"")
正在寻找细绳包含单元格 B8 中的所有内容。正如您所发现的,数字不是字符串。如果将其格式化为文本,它仍然不是字符串。您可以通过将查找表中的值从 更改为 来测试这一点578
,'578
现在您应该能够通过在单元格 B8 中输入578
(或像 这样的子集)来找到它。78
如果您无法修改查找表中的所有数字,我能想到的唯一解决方案是创建一个单独的列,其中包含已转换为字符串的 A 列副本。例如,在 Sheet1 的 K 列中,您可以创建 A 列的副本并附加一个空字符串。在单元格 K1 中输入,然后将其复制下来。现在将您的搜索=$A1&""
更改为K 列而不是 A 列。VLOOKUP