为什么具有近似匹配 (true) 的 HLOOKUP 没有相应地返回小于 lookup_value 的下一个最大值

Why didn't HLOOKUP with an approximate match (true) return accordingly the next largest value that is less than lookup_value

提问人:Thi 提问时间:11/15/2023 最后编辑:Thi 更新时间:11/16/2023 访问量:85

问:

请帮我解释具有逻辑值的函数的结果如下HLOOKUP()= TRUE

B6:选择较小的lookup_array时返回0.35

B6:选择较小的时返回 0.35

在:我理解结果:首先,Excel按升序从左到右对第一行进行排序(然后我们有b c d f g m);其次,选择小于 lookup_value 的次大值;因此被选中,结果是相应的。B5gf0.6

解释在 中是正确的,但在 中是不正确的。在 ,table_array较窄,但一切都是一样的。B7B6B6

我的问题是:

  1. 返回的逻辑是什么?我什至改为 ,结果相应地。B6B1dB60.3

  2. 是否从数组的最后一列(从右到左)看到,并且没有排序?如果是,此规则何时有效,因为它与上述内容相矛盾?HLOOKUP()B5

请看下图。 返回。看起来规则首先从右到左选取,并且比lookup_value小B180.32z

但为什么和返回?B19B20#N/A

B19 and B20 return #N/A. B18 returns 0.32 instead of 0.25 as the rule at B5

如果我将第一个数组中的第一个单元格更改为(请参阅下图中的单元格)。 和(在下图中)现在返回bH14B19B20I19I200.25

B19 and B20 don't return #N/A if the first cell of the lookup_value is 'b' instead of 'u'


附加信息:我发现可以在与lookup_value具有相同格式的数组中找到最后一个值(从右到左)。我附上了一张图片,将其显示为单元格和 .HLOOKUP()C31I31

但无法解释的结果如上所述I332

find in the same format part to the lookup_value

我更改了lookup_array中的值以查看每次更改的结果,并尝试查看逻辑以及这次和上次重复的内容。我什至问过 ChatGPT 4.0,但它没有用,答案是无稽之谈。


更新2: 我在 Excel 中的新电子表格、Google Drive 和 OneDrive 的电子表格中使用了问题 1(第一张图片)中的函数。 B5 是相同的回报。 B6 返回了相同的结果。 但 B7 在 Onedrive 中是 0.3,在 Google Drive 中是 0.35。

Onedive GoogleDrive

Excel 函数 excel-公式 查找

评论

1赞 user11222393 11/15/2023
长话短说:“如果 range_lookup 为 TRUE,则table_array第一行中的值必须按升序排列:...-2、-1、0、1、2,... ,A-Z、FALSE、TRUE;否则,HLOOKUP 可能无法给出正确的值。如果 range_lookup 为 FALSE,则不需要对 table_array 进行排序。
0赞 Thi 11/16/2023
@user11222393谢谢。这就是我在第一段中的意思。但它与其他人相矛盾,我无法用这个来解释某些细胞的结果

答:

1赞 JvdV 11/15/2023 #1

根据您的第一段,您对 (H)LOOKUP 函数的理解似乎不正确。没有 Excel 自动对给定参数进行排序的机制。此外,对于近似匹配,该函数实际上并不考虑精确匹配,而是考虑比给定输入更大的第一个值。旁注:您给出的结果不正确,或者您得到了错误的查找值(可能需要为“c”)。B7A7

所以恕我直言,答案就在 MS 文档中,该文档对此事非常清楚。使用近似匹配时,您需要输入一个排序数组(升序)。否则,您最终可能会得到意想不到的结果。

如果无法输入排序数组,则 (H)LOOKUP 的底层过程将在找到大于查找值的第一个元素处停止,然后返回该值之前的值,除非查找值小于数组中的第 1 个元素。在 的情况下,您正在寻找 'g'。发现大于“g”的第一个值是“m”。由于您的输入排序,因此它将返回的值是属于“f”的值(因为这是位于“匹配”值之前的值)。B5

因此,我建议仔细阅读文档并注意上述行为。现在,您可以尝试:

enter image description here

公式:B5

=HLOOKUP(A5:A7,SORT(A1:F2,1,,1),2,1)

@MayukhBhattacharya给出的另一种选择是:XLOOKUP()

=XLOOKUP(A5:A7,A1:F1,A2:F2,,-1)

评论

0赞 Thi 11/16/2023
谢谢。为我更新的第一张图片中的错误功能道歉。我在格式化第 1 段时犯了一个错误:我认为我没有理解错误。我是基于Microsoft网站上的解释。我在 Excel、Google Drive 和 OneDrive 的新电子表格中使用了它。B5 是一样的。B6 是一样的。但是 B7 在 Onedrive 中是 0.3,在 Google Drive 中是 0.35。请参阅上面更新的屏幕截图 - 在底部,我在公式中使用它来查找每行中没有空白的最后一个单元格。该公式适用于该范围。我的目标是了解更多关于 HLOOKUP() 函数的信息
0赞 Thi 11/16/2023 #2

我在这里找到了解释,这对我来说很有意义:https://www.experts-exchange.com/articles/2637/Six-Reasons-Why-Your-VLOOKUP-or-HLOOKUP-Formula-Does-Not-Work.html

HLOOKUP()、VLOOKUP() 可能会返回错误或不正确的值。 为了解决这个问题,如果我们省略或使用 TRUE 表示range_lookup,我们必须对第一列/第一行进行排序