查找功能不适用于未排序的列表

Posted

技术标签:

【中文标题】查找功能不适用于未排序的列表【英文标题】:lookup function doesn't work with unsorted list 【发布时间】:2014-11-23 02:14:48 【问题描述】:

为什么会这样,并正确查找值

但是一旦我改变了值的顺序,它会产生不正确的值?

【问题讨论】:

【参考方案1】:

如果您阅读 LOOKUP 函数的注释,它会说:

只有对 search_range 或 search_result_array 中的数据进行排序后,LOOKUP 函数才能正常工作。如果数据未排序,请使用 VLOOKUP、HLOOKUP 或其他相关函数。

如下更改您的公式以使用 VLOOKUP:

=VLOOKUP(D3, A1:B6, 2, FALSE)

语法:

VLOOKUP(search_key, range, index, [is_sorted])

search_key - 要搜索的值。例如,42、“猫”或 I24。

range - 要考虑的搜索范围。搜索范围中的第一列以查找在 search_key 中指定的键。

index - 要返回的值的列索引,其中范围内的第一列编号为 1。

is_sorted - [可选 - 默认为 TRUE] - 指示要搜索的列(指定范围的第一列)是否已排序。

【讨论】:

基于IFERROR 的文档,如果您将查找表保留在工作表的第二页中,您可以为失败的查找设置一个默认值,例如:=IF(NOT(ISNA(VLOOKUP(B2,'<sheet_name>'!A:B,2, FALSE))), VLOOKUP(B2,'<sheet_name>'!A:B,2, FALSE), "<default>"),其中 A 列是键,B 是值,在工作表“”中未排序。 VLOOKUP 不能替代 LOOKUP,因为它要求查找值位于第一列。 @Nick VLOOKUP 要求查找值位于指定 范围 的第一列中。唯一不能替代 LOOKUP 的情况是,所需结果的列位于查找值列的左侧。 找到了在结果范围在搜索范围之前进行未排序查找的解决方案。 INDEX(result_range,MATCH(search_key,search_range,0)) 来源:yagisanatode.com/2017/11/27/… @flyingsolow 谢谢!您应该将其添加为答案,以便更容易看到,因为这修复了 LOOKUP 的一个非常明显的不足。

以上是关于查找功能不适用于未排序的列表的主要内容,如果未能解决你的问题,请参考以下文章

查找最接近未完全排序的列表中的值的项目的索引

在 PhP、Wordpress 和 MySQL 中,查找最近的位置的功能不适用于自定义表

算法----列表查找以及列表排序

用于在未排序数组中查找最大元素的 Java util 函数

Jquery可排序水平列表不适用于固定项目

Python二分搜索类函数,用于查找排序列表中大于特定值的第一个数字