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

rxztt3cl  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(108)

请帮助我解释从HLOOKUP()函数与逻辑值= TRUE的结果如下数据
B6:选择较小的lookup_array时返回0.35
B6: returns 0.35 when choosing a smaller
B5处:我理解结果:首先,Excel按从左到右的升序对第一行进行排序(然后我们有B c d f g m);其次,选择小于lookup_value g的下一个最大值;因此选择f,相应地结果是0.6
这个解释在B7中是正确的,但在B6中不正确。在B6中,table_array更窄,但一切都是一样的。

我的问题是:

1.在B6处返回的逻辑是什么?我甚至将B1改为d,在B6处的结果相应地是0.3

  1. HLOOKUP()是否从数组的最后一列开始(从右到左),并且没有排序?如果是,这个规则什么时候起作用,因为它与上面的B5相矛盾?
    请看下图。B18返回0.32。看起来规则是从右到左首先拾取的,并且小于lookup_value z
    为什么B19B20返回#N/A
    x1c 0d1x的数据
    如果我将第一个数组中的第一个单元格更改为b(参见下图中的单元格H14),则B19B20(下图中的I19I20)现在返回0.25



其他信息:我发现HLOOKUP()将找到数组中最后一个与lookup_value格式相同的值(从右到左)。我附上了一张图片,将其显示为单元格C31I31
但无法解释的结果是I33,如问题2中所述



我改变了lookup_array中的值,以查看每次更改的结果,并试图查看逻辑以及这次和上次重复的内容。我甚至问了ChatGPT 4.0,但它不起作用,答案是胡说八道。
更新2:我在Excel中的新电子表格中使用了问题1中的函数(第一张图片),在Google Drive和OneDrive中的电子表格中也是如此。B5是相同的返回。B6返回相同。但B7在OneDrive中为0.3,在Google Drive中为0.35。
OnediveGoogleDrive

xkftehaa

xkftehaa1#

根据你的第一段,似乎你对(H)LOOKUP函数的理解是不正确的。Excel没有自动排序给定参数的机制。此外,近似匹配函数实际上并没有考虑精确匹配,而是考虑第一个大于给定输入的值。备注:你在B7中给出的结果是不正确的,或者你在A7中得到了错误的查找值(可能需要是'c')。
所以恕我直言,答案就在MS-documentation中,这一点很清楚。使用近似匹配,你需要输入一个 * 排序的数组(升序)*。否则你可能会得到意想不到的结果。
如果你没有输入一个有序的数组,(H)LOOKUP的底层过程将停止在第一个元素发现大于查找值之前 * 返回之前的值 *,除非查找值小于数组中的第一个元素。在你的B5的情况下,你正在寻找'g'。第一个比'g'大的值是'm '。由于你的输入是 * 不**排序的,它将返回属于'f'的值(因为这是位于“匹配”值之前的值)。
因此,我建议您仔细阅读文档并注意上述行为。现在您可以尝试:
x1c 0d1x的数据
B5中的公式:

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

字符串
@MayukhBhattacharya给出的另一种选择是XLOOKUP()

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

展开查看全部
kwvwclae

kwvwclae2#

我在这里找到了解释,对我来说很有意义:https://www.experts-exchange.com/articles/2637/Six-Reasons-Why-Your-VLOOKUP-or-HLOOKUP-Formula-Does-Not-Work.html
HLOOKUP(),VLOOKUP()可能会返回错误或不正确的值。为了解决这个问题,如果我们省略或使用TRUE for range_lookup,我们必须对第一列/行进行排序

相关问题