【问题标题】:Index Match in Array in Google SheetsGoogle表格中数组中的索引匹配
【发布时间】:2018-09-04 20:00:44
【问题描述】:

我有一个电子表格“数据库”,其中有两列,“国家”(A) 和“公司”(B)。国家从 1 到 10 编号。公司标有字母。

电子表格会跟踪在每个国家/地区开展业务的公司。因此,A 列中包含国家 1 且 B 列中包含公司 A 的行表示公司 A 在国家/地区 1 运营。这是此电子表格的屏幕截图:

然后我有第二个电子表格,名为“按公司划分的国家/地区”,我想在其中列出公司运营所在的国家/地区。我希望它们从“按公司划分的国家/地区”表的单元格 B3 开始列在不同的行中。应列出国家/地区的公司名称在同一张表的单元格 B1 中。我认为这必须通过 INDEX MATCH 函数的 ARRAY 版本来完成,但我似乎无法让它工作。

我在“按公司划分的国家/地区”表的单元格 B3 中输入了以下公式:=INDEX(Database!$A$1:$B$76, MATCH($B$1, Database!$B$1:$B$76, 0), COLUMN(Database!A:A))。但是,正如预期的那样,它只会返回单元格 B1 中的公司运营所在的第一个国家/地区,而不会返回其他国家/地区。同样,我需要在 B3 单元格的不同行中列出该公司运营所在的所有国家/地区。

我已在here 中设置了样本表。如果我不太清楚,我认为这可能会有所帮助。

感谢您的帮助!

【问题讨论】:

    标签: arrays indexing google-sheets match


    【解决方案1】:

    使用FILTER 允许将数据库表上的值限制为仅匹配给定条件的值:

    =FILTER(Database!$A:$A, Database!$B:$B=$B$1)
    

    Database 表上的给定公司指数生成每个国家/地区的指数。如果只需要国家索引值(例如 1、3、6),而不是将这些索引值转换为假设的“国家数据库”表中保存的名称或其他属性,则上述FILTER 就足够了。

    如果需要更多信息,则VLOOKUP 可用于返回多个输入(即数组输入)的对应值:

    B3:  =ARRAYFORMULA(VLOOKUP(
             FILTER('Database'!$A:$A, 'Database'!$B:$B=$B$1),  // Searched values
             'Country DB'!$A:$B,                               // Database sheet having more country information (like name, gdp, ...)
             2,                                                // Column of the desired information
             FALSE))
    

    将从“Country DB”表中每个相应的国家/地区索引行产生第二列:

    【讨论】:

    • 非常感谢!这是一个很好的解释,并且完全符合我的要求。
    【解决方案2】:

    尝试使用过滤器

    =filter(Database!A2:B,Database!A2:A=B1)
    

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2021-12-05
      • 2021-10-31
      • 2013-12-20
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2019-10-06
      相关资源
      最近更新 更多