我目前正在
=VLOOKUP(D5,'Per payment&sub'!D$8:'Per payment&sub'!D$394,1,FALSE)
返回 #N/A,而我原本期望匹配。我已经进行了必要的谷歌搜索,但我能找到的所有针对这种情况的建议都表明,如果上述方法不起作用,那应该是因为预期匹配的单元格的相等测试失败了 - 即在我们的例子中
=D5='Per payment&sub'!D12
应该返回 FALSE(然后从那里继续进行故障排除,以准确找出预期匹配的值的不同之处 - 数据类型、尾随空格等)。
事情是,在我们的例子中,测试返回 TRUE。因此,当直接询问时,excel 认为这两个值匹配,但当询问 D5 是否匹配范围内的任何值时包括'每次付款&sub'!D12('每次付款&sub'!D$8:'每次付款&sub'!D$394 按照上述 VLOOKUP)它想告诉我没有。
有人知道这个圆怎么化平方吗?我试过一些不同的事情:
- 将查找范围内的原始公式计算值替换为静态值
- isnumber() 对两个单元格进行测试(均返回 true)
- type() 对两个单元格进行测试(均返回 1)
- 仅在范围的开始处有工作表引用 - 即
=VLOOKUP(D5,'Per payment&sub'!D$8:D$394,1,FALSE)
- 使用等效的 MATCH 函数代替 VLOOKUP
- 将范围(对于 VLOOKUP 和 MATCH)缩小到预期匹配的单个单元格
- 从工作表名称中删除“&”,以防万一出现问题(包含 VLOOKUP 的工作表称为“银行转账”,我认为这应该是一个足够安全的名称......)
- 引用然后将另一张表(“按付款和订阅”)中的静态值复制到公式所在的表)
- 检查所有涉及的单元格是否有前导撇号(尽管假设搜索键单元格或匹配范围单元格中有撇号,而另一个没有,那么 =cell1=cell2 测试就会失败)
- 将对搜索键单元格的引用包装在 VALUE() 和 TEXT() 中
但一切似乎都给出了相同的结果 - 直接比较时单元格是相同的,但忘记了让 VLOOKUP 或 MATCH 表现。
有人知道为什么我们能够在单个比较中取得成功,但在包含单个单元格的范围内匹配却失败吗?TIA
更新:已尝试将数据复制粘贴到一个新的工作簿(按照 Muji 下面的建议,特定于文件的设置可能正在起作用 - 该文件确实来自不同的组织,所以这并非不可能),同时在同一个工作表中包含要搜索的值和要搜索的范围:
问题仍然存在。在上面的公式中,从 A6 复制粘贴到 E5 确实会导致 N5 和 O5 中的公式(使用 E5 而不是 -C5 作为搜索键的公式)返回预期结果(这表明公式是正确的,但当然,否则就违背了目的)。同样,将 A6 复制到 C5 并从 K5 和 L5 中的公式中删除减号。
更新 2:再次复制到新文件(这次真的救了它),已上传如果有人想看看数据本身。
此外,excel 版本是 office 365,版本 1908 内部版本 11929.20300 即点即用,如果这可能完全相关的话。
另外 - 在上传文件中修复公式后(在 G 列中 - 没有任何影响结果的内容,我只是错过了范围部分中的 $s - 但由于范围内的对应值始终与搜索键单元格位于同一行或位于被搜索范围下方,因此始终仍具有匹配的值),我现在注意到一个 Excel 警告:
公式或函数没有可用的值。
然而,在谷歌上找不到任何可以表明为什么会出现这种情况的信息,并且完全不明白为什么它会影响某些行而不会影响其他行。
更新(最终版):仍然不知道是什么导致了这个问题,但从 excel 复制粘贴到 word 然后再复制回来似乎已经解决了这个问题,所以看起来原始电子表格中有一些包含这些值的元数据把事情搞砸了。虽然下面的答案没有直接解决问题,但正确地表明这可能是问题所在,因此已被接受。
答案1
好吧,由于我们没有实际数据,我们只能进行猜测,因为这显然涉及一些微小的技术细节。
数据来自外部来源。第一张图片中的数据位于屏幕的左边缘。通常这意味着它被视为文本。我DO
注意到第二张图片中有一些格式,但第一列可以简单地右对齐,而不是从文本开头直接变成数字。
所以我认为这就是问题所在。查找列中的某些数据是文本。不仅格式化为文本,而且还强制'
Excel 的许多操作和函数将它们视为文本。例如,查找的表 (A1:A394) 会创建一个值数组 ( {-3.5;252.05;...}
),查找实际上是在其中执行的。
到目前为止一切顺利。但是,如果 A 列中的条目为'-3.5
vs,-3.5
则该数组中的条目为"-3.5"
NOT -3.5
,查找将失败,并显示 #N/A 错误(因此 {"-3.5";252.05;...}
:)。
这种事情是外部数据(对您和您直接控制的事物而言是“外部”)的常见问题。人们会期望所有值都如此,但我想只有机器生成它们时才会这样。如果一路上都有人手输入,那么游戏就开始了。如果数据是从多个来源收集的,即使不是所有来源都这样做,其中一个或多个来源也可能这样做,那么游戏就开始了。
如果问题出在 C 列,那么实际上它不会是一个问题,确切地说,因为查找值没有解析为数组,而只是您实际看到的东西,现在它-
前面有一个,所以 Excel 将其视为数字。表 (A1:A394) 没有得到这种处理,因为它解析为数组形式,并且文本项被双引号引起来。在“它是否等于我期望它定位的单元格”的情况下,两个项都是单个项,并且不会以数组形式在计算中返回,因此在这些测试中不会出现双引号,这就是它们成功而查找失败的原因。
假设有人手动输入查找值(原文中为 D5),因此就查找而言,无论如何它都是一个数字。然而,即使查找值前面有单引号,公式也会将其视为数字,如所述。所以...关键元素是它是一个单元格,因此在公式计算中不会以数组形式返回。
这种情况很容易测试。查看失败情况,看看是否存在文本标记,通常是单引号。(有些人和某些程序有时仍会产生这些条目。)或者只需将单元格格式化为General
,输入 1,然后粘贴|特殊|乘以失败的值,或者一次粘贴整个列。在我的测试中,这确实很有效,就像通常一样。
不过必须进行测试,因为有时无法强制更改。但它有效,所以尝试一下还是不错的。
我试过六种方法,但只有一种会导致失败。这可能不是解决您情况的方法,但可以尝试一下,因为其基本思想是外部数据中非常常见的困难。
这里有很多细节。如果我将 A 列和 C 列单元格格式化为文本并使用前面的单引号,那么我让公式起作用的唯一方法是用 包装单元格,VALUE()
以便将其视为数字并根据需要将其与 组合-
,然后将所有内容包装进去,TEXT()
将符号更改后的值重新转换为文本以匹配 A 列中的文本。因此,如果事情是好数据和有问题的数据的混合,那么顺序和细节就很重要。
不过,如果没有实际的电子表格来仔细检查这些技术细节,那么就只能猜测了。