【问题标题】:Combine first column of n sheets to one colume将 n 个工作表的第一列合并为一列
【发布时间】:2020-12-24 06:17:16
【问题描述】:

所以在一个电子表格文件中,我们有 n 个工作表。

Sheet1
Names
a
b
Sheet2
Names
b
c
d

依此类推.. 假设第一列有 n 个工作表,其中有 n 个值

然后是一张超级表。 超级表

Supersheet Supersheet Supersheet Supersheet
Sheet1 Sheet2 Sheet3 ...
Names Count
a 1
b 2
c 1
d 1

假设 A1:1 是我们要从中获取名称的所有工作表名称的列表。我们希望将名称粘贴到 A3:A 中。

我的第一个想法是做 =unique(filter({INDIRECT(A1&"!A3:A");INDIRECT(B1&"!A3:A");INDIRECT(C1&"!A3:A")},{INDIRECT(A1&"!A3:A");INDIRECT(B1&"!A3:A");INDIRECT(C1&"!A3:A")}<>"")) 并展开,但这并不能处理 N 张。

所以我认为我能做的是 =ARRAYFORMULA(INDIRECT(A2:C2&"!A2:A3")) 但这只会处理sheet1。 INDIRECT 不适用于数组公式

那我该怎么办?

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    您可以使用一些脚本或将工作表放入数组 {} 并对其进行预编程:

    =QUERY({INDIRECT(Sheet1!A1&"!A3:A"); 
            INDIRECT(Sheet2!A1&"!A3:A")}, 
     "select Col1,count(Col1) 
      where Col1 is not null 
      group by Col1 
      label count(Col1)''")
    

    因为这是一栏,未来的工作表可以通过这种方式添加:

    =QUERY({INDIRECT(Sheet1!A1&"!A3:A"); 
            INDIRECT(Sheet2!A1&"!A3:A");
    IFERROR(INDIRECT(Sheet3!A1&"!A3:A"));
    IFERROR(INDIRECT(Sheet4!A1&"!A3:A"))}, 
     "select Col1,count(Col1) 
      where Col1 is not null 
      group by Col1 
      label count(Col1)''")
    

    IMPORTRANGE 将是:

    =QUERY({IMPORTRANGE("id", Sheet1!A1&"!A3:A"); 
            IMPORTRANGE("id", Sheet2!A1&"!A3:A");
    IFERROR(IMPORTRANGE("id", Sheet3!A1&"!A3:A"));
    IFERROR(IMPORTRANGE("id", Sheet4!A1&"!A3:A"))}, 
     "select Col1,count(Col1) 
      where Col1 is not null 
      group by Col1 
      label count(Col1)''")
    

    ofc,每个importrange公式都需要单独授权

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 2015-02-22
      • 1970-01-01
      • 2014-01-27
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多