在发表旧文章时,我想将我的解决方案添加到组合中。您可以使用列名,我觉得它更有用。这样,当您在源数据中插入或删除列时,您不必编辑查询函数调用。
我看到其他人使用匹配和替代,我实现了一些与简单查询功能调用有所不同的东西。
首先-像这样创建所有列名称的查找表。我的查找表仅从“配置”表的E列开始,因为我在表单上还有其他项,因此可以轻松地将其放在自己的表单中。
第1列(列名)
=TRANSPOSE( 'Source Data'!1:1 )
第2栏(#栏)
=arrayformula( row( E2:E ) - 1 )
第三栏(栏目字母)
=arrayformula( if( int( F2:F / 26.5 ) > 0, char( int( F2:F / 26.5 ) + 64), "" ) & char( (F2:F - (int( F2:F / 26.5 ) * 26 ) ) + 64 ) )
我愿意将列号转换为字母。该公式的局限性在于它只能处理78列。虽然对我来说绰绰有余。
现在,您的Query函数调用将如下所示:
=query( 'Source Data'!$A:$L,
"Select " & " " &
vlookup( "Date", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Query Engine Conn Count", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Conn Limit Retry Count", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Max Sequential Retry in One Minute", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Conn Limit Errors", Config!$E:$G, 3, false ) & " " &
"where " & vlookup( "Display in Graph.", Config!$E:$G, 3, false ) & "=TRUE " &
"order by " & vlookup( "Date", Config!$E:$G, 3, false ) & " desc "
)
保持格式正确,完全可以管理。您将遭受的唯一痛苦是,如果您更改vlookup范围的列索引。但是,考虑到它是一个辅助范围,这应该不会经常更改(如果有的话)。
HEADERS > 0
给定数量的标题行将=QUERY
在查询结果的顶部返回,是吗?这很有意义-我认为HEADERS
在查询中只忽略了指定的行。