谷歌表格中的INDEX MATCH--垂直查找的另一种方式

  • Share This
Michael Brown

当你需要在工作表中找到与某个关键记录相对应的数据时,你通常会求助于谷歌表的VLOOKUP。 但你要知道:VLOOKUP几乎立刻就会给你带来限制。 这就是为什么你最好通过学习INDEX MATCH来增加任务的资源。

Google Sheets中的INDEX MATCH是两个函数的组合:INDEX和MATCH。 当它们一起使用时,它们可以作为Google Sheets VLOOKUP的一个更好的替代品。 让我们在这篇博文中一起了解它们的功能。 但首先,我想让你快速浏览一下它们在电子表格中的作用。

    谷歌表的MATCH功能

    我想从谷歌表的MATCH开始,因为它真的很简单。 它扫描你的数据,寻找一个特定的值并返回其位置。

    =MATCH(search_key, range, [search_type])
    • 搜索_键 是你要找的那个记录,需要。
    • 范围 是要查找的行或列。 要求。

      注意:MATCH只接受一维数组:行或列。

    • 搜索_类型 是可选的,它定义了匹配应该是精确的还是近似的。 如果省略,它默认为1。
      • 1 表示该范围以升序排序。 该函数获取小于或等于你的 搜索_键 .
      • 0 将使函数在你的范围没有排序的情况下寻找精确的匹配。
      • -1 提示记录使用降序排序。 在这种情况下,函数得到的最小值大于或等于你的 搜索_键 .

    这里有一个例子:为了获得某种浆果在所有浆果列表中的位置,我需要在我的谷歌表格中使用以下MATCH公式。

    =MATCH("Blueberry", A1:A10, 0)

    谷歌表的INDEX功能

    虽然MATCH显示了要在哪里寻找你的值(它在范围内的位置),但Google Sheet的INDEX功能是根据其行和列的偏移量来获取值本身。

    =INDEX(参考,[行],[列])
    • 参考 是要看的范围。
    • 是指从你的区域的第一个单元格开始偏移的行数。 可选,如果省略则为0。
    • 栏目 ,就像 ,是偏移列的数量。 也是可选的,如果省略也是0。

    如果你指定了两个可选参数(行和列),Google Sheet INDEX将从目标单元格返回一条记录。

    =index(a1:c10, 7, 1)

    跳过其中一个参数,该函数将相应地得到整个行或列。

    =index(a1:c10, 7)

    如何在谷歌表格中使用INDEX MATCH - 公式示例

    当INDEX和MATCH在电子表格中一起使用时,它们的威力是最大的。 它们绝对可以替代Google Sheet的VLOOKUP,并根据你的键值从表中获取所需的记录。

    为谷歌表建立你的第一个INDEX MATCH公式

    假设你想从我上面使用的同一表格中获得蔓越莓的库存信息。 我只是把B列和C列对调了一下(稍后你会发现原因)。

    1. 现在所有的浆果都列在C列,谷歌表的MATCH功能将帮助你找到小红莓的准确行数。 8

      =MATCH("红莓", C1:C10, 0)

    2. 把整个MATCH公式放到一个 在INDEX函数中的参数。

      =INDEX(A1:C10, MATCH("红莓", C1:C10, 0))

      这个会把整行的小红莓都送回来。

    3. 但由于你所需要的是股票信息,所以也要指定查找栏的编号。 3

      =INDEX(A1:C10, MATCH("红莓", C1:C10,0), 2)

    4. Voila!

    5. 你可以更进一步,放弃最后一列指标( 2 如果你只使用查找栏,你根本不需要它( B1:B10 )而不是整个表( A1:C10 )作为第一个参数。

      =INDEX(B1:B10, MATCH("红莓", C1:C10, 0))

      提示:检查各种浆果可用性的一个更方便的方法是将它们放在一个下拉列表中( E2 ),并将你的MATCH函数引用到有该列表的单元格。

      =index(b1:b10, match(e2, c1:c10, 0))

      一旦你选择了浆果,相关数值就会相应改变。

    为什么谷歌表格中的INDEX MATCH比VLOOKUP更好?

    你已经知道谷歌表的INDEX MATCH在表中查找你的值,并从同一行返回另一条相关的记录。 你也知道谷歌表的VLOOKUP也是这样做的。 那么为什么要这样做呢?

    事情是这样的。 指数匹配 一些主要优势 超过VLOOKUP。

    1. 左侧查找是可能的 我之前改变了列的位置来说明这个问题:Google Sheets中的INDEX MATCH功能可以而且确实在搜索列的左边寻找。 VLOOKUP总是搜索范围的第一列,并在其右边寻找匹配 - 否则,它只能得到#N/A错误。

    2. 在添加新列和移动现有列时,没有混乱的引用。 如果你增加或移动列,INDEX MATCH会自动反映变化,而不会干涉结果。 由于你使用了列的引用,它们会被Google Sheets即时调整。

      继续尝试用VLOOKUP做这件事:它需要订单号而不是查询列的单元格参考。 因此,你最终只会得到错误的值,因为另一列占据了相同的位置--列 2 在我的例子中。

    3. 考虑到文本案例 必要时(下面会有更多这方面的介绍)。
    4. 可用于基于多个标准的垂直查询。

    我请你在下面详细看一下最后两点。

    在谷歌表格中用INDEX MATCH进行区分大小写的V形查询

    当涉及到大小写敏感度时,INDEX MATCH是一个首选。

    假设所有浆果都以两种方式出售--散装(在柜台称重)和装箱。 因此,每种浆果在列表中的不同情况下有两种出现,每种浆果都有自己的ID,也有不同的情况。

    那么,你如何查询以某种方式出售的浆果的股票信息呢? VLOOKUP将返回它找到的第一个名字,无论其情况如何。

    幸运的是,谷歌表的INDEX MATCH可以正确地做到这一点。 你只需要使用一个额外的函数--FIND或EXACT。

    例1.对大小写敏感的Vlookup的FIND

    FIND在Google Sheets中是一个区分大小写的函数,这使得它非常适用于区分大小写的垂直查找。

    =ArrayFormula(INDEX(B2:B19, MATCH(1, FIND(E2, C2:C19)), 0))

    让我们看看在这个公式中会发生什么。

    1. FIND扫描C列( C2:C19 )的记录,从 E2 ( 樱花 一旦找到该单元格,公式就会在该单元格上 "标记 "一个数字------。 1 .
    2. MATCH搜索这个标记 - 1 - 在同一列中( C ),并将其行的编号交给INDEX。
    3. INDEX下来到B列的那一行( B2:B19 ),并将所需的记录取给你。
    4. 当你建立完公式后,按Ctrl+Shift+Enter键,在开头添加ArrayFormula。 这是必须的,因为没有它,FIND就不能在数组中搜索(在多个单元格中)。 或者你可以输入' ArrayFormula '从你的键盘上。

    例2.EXACT用于区分大小写的Vlookup

    如果你用EXACT代替FIND,后者将寻找具有完全相同字符的记录,包括其文本大小写。

    唯一的区别是,EXACT用 "标记 "的方式进行匹配。 为真 而不是数字 1 因此,MATCH的第一个参数应该是 是的 :

    =ArrayFormula(INDEX(B2:B19, MATCH(TRUE, EXACT(E2, C2:C19), 0))

    谷歌表的INDEX MATCH有多个标准

    如果有几个条件,你想根据这些条件来获取记录,怎么办?

    让我们检查一下价格 樱花 正在销售的 PP桶 并且已经 跑出 :

    我把所有的标准都安排在F列的下拉列表中,而且支持多个标准的是谷歌表的INDEX MATCH,而不是VLOOKUP。 下面是你需要使用的公式。

    =ArrayFormula(INDEX(B2:B24, MATCH(CONCATENATE(F2:F4), A2:A24&C2:C24&D2:D24, 0),))

    不要惊慌!:)它的逻辑其实很简单。

    1. 连接(f2:f4) 将带有标准的单元格中的所有三条记录合并成一个字符串,像这样。

      CherryPP水桶跑出来了

      这是一个 搜索_键 为MATCH,或者,换句话说,你要在表中寻找的东西。

    2. A2:A24&C2:C24&D2:D24 构成一个 范围 由于所有三个标准都发生在三个独立的列中,这种方式可以将它们结合起来。

      樱桃木纸板托盘有库存

      CherryFilm包装无库存

      CherryPP水桶跑出来了

      等。

    3. MATCH的最后一个参数 - 0 - 使得有可能找到与之完全匹配的 CherryPP水桶跑出来了 正如你所看到的,它在第三行。
    4. 然后INDEX做它的事情:它从B列的第三行获取记录。
    5. ArrayFormula是用来让其他函数与数组一起工作的。

    提示:如果你的公式没有找到匹配,它将返回一个错误。 为了避免这种情况,你可以用IFERROR包住整个公式(使其成为第一个参数),并在单元格中输入你想看到的任何内容,而不是错误作为第二个参数。

    =IFERROR(ArrayFormula(INDEX(B2:B27, MATCH(CONCATENATE(F2:F4), A2:A27&C2:C27&D2:D27, 0),), "未找到")

    在谷歌表格中更好地替代INDEX MATCH - 多个VLOOKUP匹配

    无论你喜欢什么查询功能,VLOOKUP或INDEX MATCH,都有一个更好的替代方案。

    多重VLOOKUP匹配是谷歌表的一个特殊附加功能,旨在。

    • 无公式的查询
    • 在所有方向上进行查询
    • 通过对不同数据类型的多个条件进行搜索。 文本、数字、日期、时间。 等。
    • 取几个火柴,需要多少就取多少(当然,前提是你的桌子里有同样多的火柴)。

    界面简单明了,所以你不必怀疑你是否做对了一切。

    1. 选择来源范围。
    2. 设置要返回的匹配数和列数。
    3. 使用预定义的运算符对条件进行微调( 包含, =, 非空 , 之间 ,等等)。

    你也将能够。

    • 预览结果
    • 决定放在哪里
    • 以及如何:作为一个公式或只是数值

    不要错过这个检查附加组件的机会。 继续从谷歌工作空间市场安装它。 它的教程页面将详细解释每个选项。

    我们还准备了一个特别的教学视频。

    在下面的评论或下一篇文章中见;)

    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.