【问题标题】:Is there an easy way to find multiple header columns given a set of data?给定一组数据,是否有一种简单的方法可以找到多个标题列?
【发布时间】:2021-07-26 19:56:16
【问题描述】:

我有一张看起来像这样的工作表:

我想要一个公式来查询 A2:E7 中的数据并从 A1:E1 中提取相应的列标题。诀窍是值可能会出现不止一次。

示例结果如下所示:

示例表:https://docs.google.com/spreadsheets/d/1Zr_q8nwYPixUjxWYdT-WlQLiGIUzqoK_cSQXSp19nJg

【问题讨论】:

    标签: arrays google-sheets google-sheets-formula transpose google-query-language


    【解决方案1】:

    使用:

    =ARRAYFORMULA(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G, 
     SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
     IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")), 
     "select Col1,max(Col2) 
      where Col2 is not null 
      group by Col1
      pivot Col3"), 
     "offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))))
    


    更新:

    =ARRAYFORMULA(ARRAY_CONSTRAIN(IFERROR(TRIM(SPLIT(IFNA(VLOOKUP(G1:G, 
     SPLIT(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(UNIQUE(SPLIT(FLATTEN(
     IF(A2:E="",,A2:E&"♂×"&A1:E1&"♀×"&A1:E1)), "×")), 
     "select Col1,max(Col2) 
      where Col2 is not null 
      group by Col1
      pivot Col3"), 
     "offset 1", 0)),,9^9)), "♂"), 2, 0)), "♀"))), 9^9, 2))
    

    【讨论】:

    • 一个问题 - 如果 J 列中有任何值,则公式将不起作用。可以将公式设置为仅填充两列吗?除此之外,它很好用,谢谢!
    • @Falcon4ch 是的,这是可能的。答案已更新
    【解决方案2】:

    建议:

    如果您愿意编写脚本(工具 -> 脚本编辑器),您可以为此创建自定义公式:

    function CUSTOMLOOKUP(key, headers, table) {
      var result = [[]];
      for (i = 0; i < table.length; i++) {
        for (j = 0; j < table[i].length; j++) {
          if (key == table[i][j]) {
            result[0].push(headers[0][j]);
          }
        }
      }
      return result;
    }
    

    保存后,在您的电子表格中,CUSTOMLOOKUP 现在可以用作:

    =CUSTOMLOOKUP($G1,$A$1:$E$1,$A$2:$E$7)
    

    然后向下拖动到其余的值。

    输出:

    如果你想开始编写脚本,网上有很多JavaScript references and tutorials

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      相关资源
      最近更新 更多