I have a QUERY that looks up values from various separate sheets, this is its input:
=QUERY( {
IFNA( QUERY({'Week 1'!A2:Z133;'Week 2'!A2:Z133;'Week 3'!A2:Z133;'Week 4'!A2:Z133;'Week 5'!A2:Z133},"select Col26, Col1, Col2, Col4, Col5 where Col1 IS NOT NULL and Col4 IS NOT NULL", 0), { "","","","","" } );
IFNA( QUERY({'Week 1'!A2:Z133;'Week 2'!A2:Z133;'Week 3'!A2:Z133;'Week 4'!A2:Z133;'Week 5'!A2:Z133},"select Col26, Col1, Col6, Col8, Col9 where Col1 IS NOT NULL and Col8 IS NOT NULL", 0), { "","","","","" } );
IFNA( QUERY({'Week 1'!A2:Z133;'Week 2'!A2:Z133;'Week 3'!A2:Z133;'Week 4'!A2:Z133;'Week 5'!A2:Z133},"select Col26, Col1, Col10, Col12, Col13 where Col1 IS NOT NULL and Col12 IS NOT NULL", 0), { "","","","","" } );
IFNA( QUERY({'Week 1'!A2:Z133;'Week 2'!A2:Z133;'Week 3'!A2:Z133;'Week 4'!A2:Z133;'Week 5'!A2:Z133},"select Col26, Col1, Col14, Col16, Col17 where Col1 IS NOT NULL and Col16 IS NOT NULL", 0), { "","","","","" } );
IFNA( QUERY({'Week 1'!A2:Z133;'Week 2'!A2:Z133;'Week 3'!A2:Z133;'Week 4'!A2:Z133;'Week 5'!A2:Z133},"select Col26, Col1, Col18, Col20, Col21 where Col1 IS NOT NULL and Col20 IS NOT NULL", 0), { "","","","","" } )
}, "SELECT * WHERE Col1 IS NOT NULL ORDER BY Col1")
The {} gets repetitive and longwinded, and requires manually updating every time I add another week.
Recently I discovered I can generate a list of Week sheet names using this formula:
=ARRAYFORMULA(
"Week " &
{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30}
& "!A2:Z133"
)
and then in another column list only those sheets that actually exist:
=IF(
ISERROR(CELL("address",INDIRECT($U2))),
"",
$U2
)
Now I have a column with values such as Week1!A2:Z133, Week2!A2:Z133, etc. How can I use this column to create the QUERY formula source automatically?
Using this formula gets me the first range referenced but none of the subsequent ones in the column:
={ARRAYFORMULA(INDIRECT(AA:AA) )}
{INDIRECT( ARRAYFORMULA( "Week " & { 1;2;3} & "!A2:Z133" ) )}but it will fail if Week 3 doesn't exist, if I can easily filter out the items that are not valid cell references I think I'll have a solution that avoids needing any columns={ARRAYFORMULA(INDIRECT(only the first references results are shown