提问人:Thi 提问时间:11/15/2023 最后编辑:Thi 更新时间:11/16/2023 访问量:85
为什么具有近似匹配 (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
问:
请帮我解释具有逻辑值的函数的结果如下HLOOKUP()
= TRUE
B6
:选择较小的lookup_array时返回0.35
在:我理解结果:首先,Excel按升序从左到右对第一行进行排序(然后我们有b c d f g m);其次,选择小于 lookup_value 的次大值;因此被选中,结果是相应的。B5
g
f
0.6
解释在 中是正确的,但在 中是不正确的。在 ,table_array较窄,但一切都是一样的。B7
B6
B6
我的问题是:
返回的逻辑是什么?我什至改为 ,结果相应地。
B6
B1
d
B6
0.3
是否从数组的最后一列(从右到左)看到,并且没有排序?如果是,此规则何时有效,因为它与上述内容相矛盾?
HLOOKUP()
B5
请看下图。 返回。看起来规则首先从右到左选取,并且比lookup_value小B18
0.32
z
但为什么和返回?B19
B20
#N/A
如果我将第一个数组中的第一个单元格更改为(请参阅下图中的单元格)。 和(在下图中)现在返回b
H14
B19
B20
I19
I20
0.25
附加信息:我发现可以在与lookup_value具有相同格式的数组中找到最后一个值(从右到左)。我附上了一张图片,将其显示为单元格和 .HLOOKUP()
C31
I31
但无法解释的结果如上所述I33
2
我更改了lookup_array中的值以查看每次更改的结果,并尝试查看逻辑以及这次和上次重复的内容。我什至问过 ChatGPT 4.0,但它没有用,答案是无稽之谈。
更新2: 我在 Excel 中的新电子表格、Google Drive 和 OneDrive 的电子表格中使用了问题 1(第一张图片)中的函数。 B5 是相同的回报。 B6 返回了相同的结果。 但 B7 在 Onedrive 中是 0.3,在 Google Drive 中是 0.35。
答:
根据您的第一段,您对 (H)LOOKUP 函数的理解似乎不正确。没有 Excel 自动对给定参数进行排序的机制。此外,对于近似匹配,该函数实际上并不考虑精确匹配,而是考虑比给定输入更大的第一个值。旁注:您给出的结果不正确,或者您得到了错误的查找值(可能需要为“c”)。B7
A7
所以恕我直言,答案就在 MS 文档中,该文档对此事非常清楚。使用近似匹配时,您需要输入一个排序数组(升序)。否则,您最终可能会得到意想不到的结果。
如果无法输入排序数组,则 (H)LOOKUP 的底层过程将在找到大于查找值的第一个元素处停止,然后返回该值之前的值,除非查找值小于数组中的第 1 个元素。在 的情况下,您正在寻找 'g'。发现大于“g”的第一个值是“m”。由于您的输入未排序,因此它将返回的值是属于“f”的值(因为这是位于“匹配”值之前的值)。B5
因此,我建议仔细阅读文档并注意上述行为。现在,您可以尝试:
公式:B5
=HLOOKUP(A5:A7,SORT(A1:F2,1,,1),2,1)
@MayukhBhattacharya给出的另一种选择是:XLOOKUP()
=XLOOKUP(A5:A7,A1:F1,A2:F2,,-1)
评论
我在这里找到了解释,这对我来说很有意义:https://www.experts-exchange.com/articles/2637/Six-Reasons-Why-Your-VLOOKUP-or-HLOOKUP-Formula-Does-Not-Work.html
HLOOKUP()、VLOOKUP() 可能会返回错误或不正确的值。 为了解决这个问题,如果我们省略或使用 TRUE 表示range_lookup,我们必须对第一列/第一行进行排序
评论