使用查询 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, ))))
我能够使用 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, ))))