1

我有一个相当简单的表,如下所示: 示例表

我想从该表中获取特定值。为此,我使用了两个不同的公式:

=iferror(DGET(Bazaar!$A:$K;"Top Sell-Offer";{"Item";"ENCHANTED_COAL"});"?")==> 返回 "?"; 应该得到一些数字 =iferror(DGET(Bazaar!$A:$K;"Top Sell-Offer";{"Item";"ENCHANTED_OBSIDIAN"});"?")==> 按预期返回“2747”

我也试过=index(filter(Bazaar!$B:$K;Bazaar!$A:$A="ENCHANTED_COAL");;1) which 确实返回了我的预期,但我无法通过标题指定我想要的列。

请注意,条件和列标题的字符串都是复制粘贴的,因此字符完美(您也可以在结果中看到。)另请注意,提供的截断表不会发生这种情况,请参阅此表

结果

为什么我会得到如此不一致的结果,我该怎么办?

提前致谢!保持健康!

4

1 回答 1

2

我复制了你的工作表并把它弄乱了。最后,我决定删除该IFERROR部分,并收到“在 DGET 评估中找到多个匹配项”的错误。错误是关键。

该公式将“ENCHANTED_COAL_BLOCK”视为“ENCHANTED_COAL”的另一个匹配项。一旦我从煤块中删除“COAL”,公式就可以正常工作。

为了让它停止看到双精度(找到完全匹配),只需在您要查找的单词前面添加一个等号:
=IFERROR(DGET(Bazaar!$A:$K,"Top Sell-Offer",{"Item";"=ENCHANTED_COAL"}),"?")

=IFERROR(DGET(Bazaar!$A:$K,C$3,{$A$3;"="&$A5}),"?")

我建议在您搜索的所有单词前添加等号,以保持一致性。

参考:https ://infoinspired.com/google-docs/spreadsheet/exact-match-in-database-functions-in-google-sheets/

于 2020-08-11T13:36:42.010 回答