使用查询 select 多个 headers 而不是列

Using query to select multiple headers instead of columns

我能够使用 header 名称而不是列字母动态 select 一维数组。

=query(A:J, "select "&substitute(address(1,match("Header2",A1:J1,0,4),"1","")&"")

可以用二维数组来实现吗?因此,我不会 selecting B:C,而是 select Header2 : Header3?

我试过使用 concat 运算符的几个变体,但都没有成功。

=query(A:J, "select "&substitute(address(1,match("Header2",A1:J1,0,4),"1","")&" "&:&" "&substitute(address(1,match("Header3",A1:J1,0,4),"1","")&"")

如果它有用或提供了可能的解决方法,则相关列将始终彼此相邻。 Header1 紧挨着 Header2 紧挨着 Header3,等等。但是,Header1 可以在任何列中。

您似乎在 match 的末尾缺少一个 )

修复后,您可以扩展解决方案以添加其他 headers,如下所示:

=query(A:J, "select "
&substitute(address(1,match("Header2",A1:J1,0),4),"1","")&","
&substitute(address(1,match("Header3",A1:J1,0),4),"1","")&","
&substitute(address(1,match("Header4",A1:J1,0),4),"1","")&"
")

转置,select headers,转回:

=TRANSPOSE(QUERY(TRANSPOSE(A:J), "where Col1 matches 'Header2|Header3|Header4'"))

或:

=FILTER(A:J, REGEXMATCH(A1:J1, "Header2|Header3|Header4"))

或:

=INDEX(INDIRECT(ADDRESS(1,         MATCH("Header2", 1:1, ))&":"&
                ADDRESS(ROWS(A:A), MATCH("Header4", 1:1, ))))