请帮助我解释从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
。
HLOOKUP()
是否从数组的最后一列开始(从右到左),并且没有排序?如果是,这个规则什么时候起作用,因为它与上面的B5
相矛盾?
请看下图。B18
返回0.32
。看起来规则是从右到左首先拾取的,并且小于lookup_valuez
为什么B19
和B20
返回#N/A
?
x1c 0d1x的数据
如果我将第一个数组中的第一个单元格更改为b
(参见下图中的单元格H14
),则B19
和B20
(下图中的I19
和I20
)现在返回0.25
的
其他信息:我发现HLOOKUP()
将找到数组中最后一个与lookup_value格式相同的值(从右到左)。我附上了一张图片,将其显示为单元格C31
和I31
。
但无法解释的结果是I33
,如问题2
中所述
的
我改变了lookup_array中的值,以查看每次更改的结果,并试图查看逻辑以及这次和上次重复的内容。我甚至问了ChatGPT 4.0,但它不起作用,答案是胡说八道。
更新2:我在Excel中的新电子表格中使用了问题1中的函数(第一张图片),在Google Drive和OneDrive中的电子表格中也是如此。B5是相同的返回。B6返回相同。但B7在OneDrive中为0.3,在Google Drive中为0.35。
OnediveGoogleDrive
2条答案
按热度按时间xkftehaa1#
根据你的第一段,似乎你对(H)LOOKUP函数的理解是不正确的。Excel没有自动排序给定参数的机制。此外,近似匹配函数实际上并没有考虑精确匹配,而是考虑第一个大于给定输入的值。备注:你在
B7
中给出的结果是不正确的,或者你在A7
中得到了错误的查找值(可能需要是'c')。所以恕我直言,答案就在MS-documentation中,这一点很清楚。使用近似匹配,你需要输入一个 * 排序的数组(升序)*。否则你可能会得到意想不到的结果。
如果你没有输入一个有序的数组,(H)LOOKUP的底层过程将停止在第一个元素发现大于查找值之前 * 返回之前的值 *,除非查找值小于数组中的第一个元素。在你的
B5
的情况下,你正在寻找'g'。第一个比'g'大的值是'm '。由于你的输入是 * 不**排序的,它将返回属于'f'的值(因为这是位于“匹配”值之前的值)。因此,我建议您仔细阅读文档并注意上述行为。现在您可以尝试:
x1c 0d1x的数据
B5
中的公式:字符串
@MayukhBhattacharya给出的另一种选择是
XLOOKUP()
:型
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,我们必须对第一列/行进行排序