【发布时间】:2021-11-28 13:02:09
【问题描述】:
我有一个QUERY,它可以从各种不同的工作表中查找值,这是它的输入:
=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")
{} 变得重复且冗长,每次我再添加一周时都需要手动更新。
最近我发现我可以使用以下公式生成周工作表名称列表:
=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"
)
然后在另一列中仅列出实际存在的那些工作表:
=IF(
ISERROR(CELL("address",INDIRECT($U2))),
"",
$U2
)
现在我有一列包含Week1!A2:Z133、Week2!A2:Z133 等值。如何使用此列自动创建QUERY 公式源?
使用这个公式可以得到第一个引用的范围,但没有列中的后续范围:
={ARRAYFORMULA(INDIRECT(AA:AA) )}
【问题讨论】:
-
我可以使用
{INDIRECT( ARRAYFORMULA( "Week " & { 1;2;3} & "!A2:Z133" ) )},但如果第 3 周不存在,它将失败,如果我可以轻松过滤掉无效单元格引用的项目,我想我会有一个解决方案可以避免需要任何列 -
这是一个非常常见的问题,常见的答案是您不应该在不同的选项卡上跟踪每周数据,而应该在一个选项卡上,作为一个额外的列来记录从哪一周开始正在输入数据。
-
我知道,但这不是一个选项(这个公式将它编译成一个标签,以便我可以规范化事情)。我有一个单独的工作表,其中包含无休止的数据序列,这些数据确实遵循推荐的模式,但我不需要关于该工作表的帮助,它是每周工作表。
-
如果我使用我的引用列并尝试使用
={ARRAYFORMULA(INDIRECT(显示它们,则只显示第一个引用结果 -
INDIRECT() 在数组公式中根本不起作用
标签: google-sheets google-sheets-formula