Excel LOOKUP函数与公式实例

  • Share This
Michael Brown

本教程解释了Excel LOOKUP函数的向量和数组形式,并通过公式实例演示了Excel中LOOKUP的典型和非典型用途。

每个Excel用户偶尔会问的一个最常见的问题是:" 我如何在一个工作表上查找一个值,并将一个匹配的值拉到另一个工作表上? "当然,基本情况可以有很多变化:你可能要寻找最接近的匹配而不是精确匹配,你可能要在一列中垂直搜索或在一行中水平搜索,评估一个或多个标准,等等。 然而,本质是一样的,你需要知道如何在Excel中查询。

Microsoft Excel提供了一些不同的方法来进行查找。 首先,让我们来学习一个函数,它被设计用来处理最简单的垂直和水平查找的情况。 你很容易猜到,我说的是LOOKUP函数。

    Excel LOOKUP函数--语法和用途

    在最基本的层面上,Excel中的LOOKUP函数在一列或一行中搜索一个值,并从另一列或一行的相同位置返回一个匹配的值。

    在Excel中,有两种形式的LOOKUP。 矢量 阵列 下面将对每种形式进行单独解释。

    Excel LOOKUP函数--向量形式

    在这种情况下,一个 向量 因此,你可以使用LOOKUP的向量形式来搜索一行或一列数据的指定值,并从另一行或另一列的相同位置提取一个值。

    矢量查询的语法如下。

    LOOKUP(lookup_value, lookup_vector, [result_vector])

    在哪里?

    • 查询_价值 (required) - 一个要搜索的值,可以是数字、文本、TRUE或FALSE的逻辑值,或对包含查找值的单元格的引用。
    • 查询_向量 (required) - 要搜索的单行或单列范围。 它必须按以下方式排序 升序 .
    • 结果_向量 (可选) - 一个行或一个列的范围,你想从中返回结果 - 一个与查找值相同位置的值。 结果_向量 必须是 相同尺寸 作为 查找_范围 如果省略,结果将从 查找_向量 .

    下面的例子演示了两个简单的查找公式的操作。

    垂直查询公式--在单列范围内搜索

    比方说,你在D列(D2:D5)有一个卖家名单,在E列(E2:E5)有他们销售的产品。 你正在创建一个仪表板,你的用户将在B2中输入卖家的名字,你需要一个公式,在B3中拉出相应的产品。 这个任务可以通过这个公式轻松完成。

    =lookup(b2,d2:d5,e2:e5)

    为了更好地理解这些论点,请看一下这个截图。

    水平查询公式--在单行范围内搜索

    如果你的源数据有一个水平布局,即条目位于行中而不是列中,那么就在 查找_向量 结果_向量 争论,像这样。

    =lookup(b2,e1:h1,e2:h2)

    在本教程的第二部分,你会发现更多解决更复杂任务的Excel查询实例。 同时,请记住以下简单的事实,它们将帮助你绕过可能的陷阱并防止常见错误。

    关于Excel LOOKUP的矢量形式,你应该知道的5件事

    1. 价值在 查找_向量 应按以下方式进行排序 升序 即从最小到最大或从A到Z,否则你的Excel查找公式可能会返回一个错误或不正确的结果。 如果你需要对 未分类的数据 ,然后使用INDEX MATCH或OFFSET MATCH。
    2. 查询_向量 结果_向量 必须是一个 一排 单栏 同样大小的范围。
    3. Excel中的LOOKUP函数是 不区分大小写 意思是,它不区分大写和小写文本。
    4. Excel LOOKUP的工作原理是 近似匹配 更确切地说,一个查找公式首先搜索精确匹配。 如果它不能准确地找到查找值,它就查找 下一个最小的值 的最大值,即在 查找_向量 小于或等于 查找_值 .

      例如,如果你的查找值是 "5",该公式将首先搜索它。 如果 "5 "没有找到,它将搜索 "4"。 如果 "4 "没有找到,它将搜索 "3",以此类推。

    5. 如果 查找_值 较小的 中的最小值相比。 查找_向量 ,Excel LOOKUP返回#N/A错误。

    Excel LOOKUP函数--数组形式

    LOOKUP函数的数组形式在数组的第一列或第一行中搜索指定的值,并从数组的最后一列或最后一行的相同位置检索出一个值。

    数组Lookup有2个参数,这两个参数都是必需的。

    LOOKUP(lookup_value, array)

    在哪里?

    • 查询_价值 - 一个要在数组中搜索的值。
    • 阵列 - 一个你想搜索查询值的单元格范围。 数组第一列或第一行的值(取决于你是做V型查询还是H型查询)必须按升序排序。 大写字母和小写字母被视为等同。

    例如,卖家名称位于数组的第一列(A列),订单日期位于数组的最后一列(C列),你可以使用以下公式来搜索名称并拉出匹配的日期。

    =lookup(b2,d2:f5)

    注意:Excel LOOKUP函数的数组形式不应该与Excel数组公式相混淆,虽然它对数组进行操作,但LOOKUP仍然是一个普通的公式,按回车键就可以完成。

    关于阵列形式的Excel LOOKUP,你应该知道的4件事

    1. 如果 阵列 行数多于列数 或相同数量的列和行,一个查找公式在第一列中搜索(水平查找)。
    2. 如果 阵列 列数多于行数 , Excel LOOKUP在第一行进行搜索(垂直查找)。
    3. 如果一个公式找不到查询值,它就用 最大值 小于或等于的数组中的 查找_值 .
    4. 如果 查询值较小 比数组第一列或第一行的最小值(取决于数组尺寸),Lookup公式会返回#N/A错误。

    重要提示! Excel的LOOKUP数组形式的功能是有限的,我们不建议使用它。 相反,你可以使用VLOOKUP或HLOOKUP函数,它们是改进的版本,分别做垂直和水平查询。

    如何在Excel中使用LOOKUP函数--公式实例

    虽然在Excel中存在更强大的查询和匹配功能(这是我们下一个教程的主题),但LOOKUP在很多情况下都很方便,下面的例子展示了几个非简单的用途。 请注意,下面的公式都使用Excel LOOKUP的向量形式。

    在一列的最后一个非空白单元格中查询一个值

    如果你有一列动态填充的数据,你可能想挑选最近添加的条目,即获得一列中最后的非空单元格。 为此,使用这个通用公式。

    LOOKUP(2, 1/( 栏目 ""), 栏目 )

    在上面的公式中,除了列的引用外,所有的参数都是常数。 因此,要检索特定列中的最后一个值,你只需要提供相应的列的引用。 例如,要提取A列中最后一个非空白单元格的值,使用这个公式。

    =lookup(2, 1/(a:a""), a:a)

    要从其他列获得最后的值,请修改列的引用,如下图所示 - 第一个引用是要检查空白/非空白单元格的列,第二个引用是要返回值的列。

    这个公式如何运作

    查找_值 参数,你提供2或大于1的任何其他数字(稍后你会明白为什么)。

    查找_向量 参数,你把这个表达式:1/(A:A"")

    • 首先,你进行逻辑运算A:A"",将A列的每个单元格与空字符串进行比较,空单元格返回TRUE,非空单元格返回FALSE。 在上例中,F2中的公式返回这个数组:{TRUE;TRUE;TRUE;TRUE;FALSE...}。
    • 然后,你用数字1除以上述数组的每个元素,TRUE等于1,FALSE等于0,你得到一个由1和#DIV/0!错误(除以0的结果)组成的新数组,这个数组被用作 查找_向量 在这个例子中,它是{1;1;1;1;#DIV/0!...}。

    现在,为什么公式会返回一列中的最后一个非空值,因为 查找_值 的任何元素不匹配。 查找_向量 理解这一逻辑的关键是,Excel LOOKUP的搜索方式是近似匹配,也就是说,当找不到准确的查询值时,它就会与下列的下一个最大值相匹配 查找_向量 小于 查找_值 在我们的案例中。 查找_值 是2,并且在的最大值是 查找_向量 是1,所以LOOKUP匹配数组中的最后一个1,也就是最后一个不空的单元格。

    结果_向量 参数,你引用你想返回一个值的列,你的Lookup公式将在与查找值相同的位置获取值。

    提示:如果你希望得到 该行的编号 保持最后一个值,然后使用ROW函数来检索它。 例如。 =lookup(2,1/(a:a""),row(a:a))

    在一行的最后一个非空白单元格中查询一个值

    如果你的源数据是按行而不是按列排列的,你可以用这个公式得到最后一个非空单元格的值。

    LOOKUP(2, 1/( ""), )

    事实上,这个公式只不过是对前一个公式的轻微修改,唯一的区别是你使用了行参考而不是列参考。

    例如,要获得第1行最后一个非空单元格的值,使用这个公式。

    =lookup(2, 1/(1:1""), 1:1)

    下面的屏幕截图显示了结果。

    获取与某行最后一个条目相关的值

    只要有一点创造力,上述公式可以很容易地被定制,以解决其他类似的任务。 例如,它可以用来获得与一行中特定值的最后一个实例相关的值。 这听起来可能有点晦涩,但下面的例子将使事情更容易理解。

    假设你有一个汇总表,其中A列包含卖家名称,随后的几列包含每个月的某种数据。 在这个例子中,如果某个卖家在某个月至少完成了一笔交易,那么单元格就包含 "是"。 我们的目标是获得与一行中最后一个 "是 "条目相关的月份。

    该任务可以通过使用以下LOOKUP公式来解决。

    =LOOKUP(2, 1/(B2:H2="yes"), $B$1:$H$1)

    该公式的逻辑与第一个例子中描述的基本相同,不同的是你使用了 "等于 "运算符("=")而不是 "不等于"(""),并且对行而不是列进行操作。

    下面的截图展示了一个结果。

    查询作为嵌套IF的替代方法

    在我们到目前为止讨论的所有查找公式中, 查找_向量 结果_向量 然而,Excel LOOKUP函数的语法允许以垂直数组常数的形式提供向量,这使你可以用一个更紧凑和容易阅读的公式来复制嵌套IF的功能。

    比方说,你在A列有一个缩写列表,你想用全称替换它们,其中 "C "代表 "已完成","D "是 "开发","T "是 "测试"。 这个任务可以通过以下嵌套的IF函数来完成。

    =IF(A2="c", "已完成", IF(A2="d", "开发", IF(A2="t", "测试","))

    或者,通过使用这个查询公式。

    =LOOKUP(A2, {"c"; "d"; "t"}, {"完成"; "开发"; "测试"})

    如下面的截图所示,这两个公式的结果完全相同。

    注意:要使Excel查询公式正确工作,在 lookup_array 应从A到Z或从最小到最大进行排序。

    如果你要从一个查找表中提取数值,那么你可以将一个Vlookup函数嵌入到 查找_值 参数,以检索出一个匹配。

    假设查询值在E2单元格,查询表是A2:C7,感兴趣的列("状态")是查询表中的第3列,下面的公式可以完成这个工作。

    =LOOKUP(VLOOKUP(E2, $A$2:$C$7, 3, FALSE), {"c"; "d"; "t"}, {"完成"; "开发"; "测试"})

    如下面的截图所示,该公式从查询表中检索项目状态,并将一个缩写替换为相应的单词。

    提示:如果你使用Excel 2016作为Office 365订阅的一部分,你可以使用SWITCH功能达到类似的目的。

    我希望这些例子对LOOKUP函数的工作原理有所启发。 为了更好地理解这些公式,欢迎你下载这些Excel查找实例。 在下一个教程中,我们将讨论在Excel中进行查找的其他几种方法,并解释在什么情况下最好使用哪种查找公式。 感谢你的阅读,希望下周在我们的博客上见到你!

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.