使用间接从多个工作表中提取查询

时间:2019-02-02 16:42:17

标签: google-sheets google-sheets-formula

我在Google工作簿中有动态的工作表列表。我希望创建一个从这些不同工作表中提取的查询-尽管我经常添加和删除工作表。

现在我查询的样子,和它的伟大工程:

=query({'1.17 invoice'!A25:N;'1.31 invoice'!A25:N;'2.1 invoice'!A25:N;'invoice 2.1 (2)'!A25:N},"SELECT Col1, Col2, Col3, Col7, Col12, Col13 where Col1 <> ''",0)

我可以创建一个单元格A1,其值是:'1.17发票'!A25:N;'1.31发票'!A25:N;'2.1发票'!A25:N;'发票2.1(2)'! A25:N

但是现在我必须将A1的结果复制并粘贴到查询公式中以便对其进行更新。当我尝试创建如下公式时:

=query({indirect(A1)},"SELECT Col1, Col2, Col3, Col7, Col12, Col13 where Col1 <> ''",0)

我只是得到一个错误,“间接结果不是有效的单元格范围”。有没有什么好办法可以自动将工作表列表放入查询功能?

1 个答案:

答案 0 :(得分:1)

OP试图使数组范围更加灵活。原始公式:

=query({'1.17 invoice'!A25:N;
        '1.31 invoice'!A25:N;
         '2.1 invoice'!A25:N;
     'invoice 2.1 (2)'!A25:N},
 "SELECT Col1, Col2, Col3, Col7, Col12, Col13 where Col1 <> ''",0)

OP在单元格A1中输入了数组范围,并修改了公式:

A1 = '1.17 invoice'!A25:N;'1.31 invoice'!A25:N;'2.1 invoice'!A25:N;'invoice 2.1 (2)'!A25:N

修改后的公式:

=query({indirect(A1)},"SELECT Col1, Col2, Col3, Col7, Col12, Col13 where Col1 <> ''",0)

这不起作用,因为INDIRECT返回单个数组值,但是A1包含多个范围。但是,如果分别声明每个范围,该查询将起作用。


布局:

A1 = '1.17 invoice'!A25:N    
A2 = '1.31 invoice'!A25:N    
A3 = '2.1 invoice'!A25:N    
A4 = 'invoice 2.1 (2)'!A25:N 

公式:

=query({indirect(A1);
        Indirect(A2);
        indirect(A3);
        Indirect(A4)},
 "SELECT Col1, Col2, Col3, Col7, Col12, Col13 where Col1 <> ''",0)

信用:
鲁本(https://webapps.stackexchange.com/a/88726/196152
Karl_S(https://webapps.stackexchange.com/a/104517/196152