【问题标题】:Use array formula with index match使用索引匹配的数组公式
【发布时间】:2015-01-20 10:35:00
【问题描述】:

是否可以做一个索引匹配的数组公式:

例如:

=arrayformula(if(len(A3:A),INDEX('SheetB'!E:E,MATCH(A3:A,'SheetB'!H:H,0))))

如果没有,有没有不涉及google脚本的解决方案?

【问题讨论】:

    标签: arrays google-sheets formula


    【解决方案1】:

    看来INDEX 不能返回多个值。不能在ARRAYFORMULA内部使用。

    我知道的唯一解决方案是使用VLOOKUP

    看到这个线程: https://productforums.google.com/forum/#!topic/docs/jVvjbz8u7A8

    那里的例子:

    =ArrayFormula(VLOOKUP( B12:B15; H2:R32; 1; TRUE))
    

    干杯!

    【讨论】:

    • VLOOKUP 的问题是如果找不到正确的值,它会返回最接近的值
    • 如果您将 FALSE 作为第四个参数传递,则不会
    • VLOOKUP 的另一个问题是它只能向右工作,即数据必须在搜索键列的右侧。要执行向左搜索,解决方案是 INDEX MATCH...
    【解决方案2】:

    我不确定它是否会起作用,但我在 ARRAYFORMULA 中的 INDEX(...) 之前做了一个“IF(ISBLANK() 并且它一直下降

    【讨论】:

      【解决方案3】:

      在 OP 的特定情况下,实际上可以将VLOOKUP 用于其预期目的,作为MATCH 的替代品:

      =arrayformula(if(len(A3:A),VLOOKUP(A3:A,{SheetB!E:E,SheetB!H:H},2,false)))
      

      在尝试使用INDEX 检索多个值的一般情况下,可以将其替换为VLOOKUPSEQUENCE 的组合:

      =arrayformula(VLOOKUP(A:A,{SEQUENCE(rows(B:B)),B:B},2,true))
      

      做应该做的事情

      =arrayformula(INDEX(B:B,A:A))
      

      如果后者按 OP 的预期工作。

      【讨论】:

        【解决方案4】:

        我知道这已经过时了,但事实证明 INDEX() 现在充当了事实上的 ARRAYFORMULA()。你可以在this google sheet 上看到一个很好的例子,它展示了如何使用 a 和 index(split()) 从单元格中提取一组特定的文本。 MK.demo 选项卡提供了有关数组公式如何通过 INDEX() 函数隐含的可视化。

        如今,使用 FILTER() 或 QUERY() 函数可以提供 OP 正在寻找的多种 vlookup。

        【讨论】:

          猜你喜欢
          • 2017-10-04
          • 1970-01-01
          • 2017-07-31
          • 2015-07-14
          • 2017-08-16
          • 2018-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多