如何在Google Sheets中使用Query()函数为数据行添加行索引
谷歌表格QUERY函数内生成独立行索引的实现方法
需求说明
需要在QUERY函数中实现类似内置ROW()函数的效果,在查询结果内生成行索引,且满足以下规则:
- 索引仅在查询结果内计数,和原表格行号无关
- 查询使用两个不同工作表作为数据源,第二个数据源的查询结果接入时,行索引需要从1重新开始计数

初始实现代码
最初拼接的查询逻辑如下,暂未加入行索引字段:
={ query(IMPORTRANGE('Static Data'!$B$2,'Static Data'!$B$3), "select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A$22:$AC$22))) & ", 'BAU' where Col"& 'Static Data'!$B$22 &" is not null label 'BAU' 'SOURCE'", 1); query(IMPORTRANGE('Static Data'!$B$2,'Static Data'!$B$5), "select Col" & ArrayFormula(textjoin(", Col",true,column('Static Data'!$A$22:$AC$22))) & ", 'ICS' where Col"& 'Static Data'!$B$22 &" is not null label 'ICS' ''", 0)}
最终可行方案
实现思路
QUERY函数本身没有内置的行号生成函数,因此可以在导入数据源时,先通过SEQUENCE+ROWS组合给每个数据源单独追加自增序列,再传入QUERY进行查询,两个数据源的序列各自独立生成,自然就能实现第二个数据源索引重新从1开始的需求。
可运行代码
调整后已将行索引字段放到表格末尾,符合展示要求:
=INDEX({QUERY({IMPORTRANGE('Static Data'!$B$2, 'Static Data'!$B$3),SEQUENCE(ROWS( IMPORTRANGE('Static Data'!$B$2, 'Static Data'!$B$3)))}, "select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A$22:$AC$22))&",'BAU' where Col"&1+'Static Data'!$B$22&" is not null label 'BAU''SOURCE'", 1); QUERY({IMPORTRANGE('Static Data'!$B$2, 'Static Data'!$B$5),SEQUENCE(ROWS( IMPORTRANGE('Static Data'!$B$2, 'Static Data'!$B$5)))+1}, "select Col1,Col"&TEXTJOIN(",Col", 1, 1+COLUMN('Static Data'!$A$22:$AC$22))&",'ICS' where Col"&1+'Static Data'!$B$22&" is not null label 'ICS'''", )})
内容的提问来源于stack exchange,提问作者plaridel1
相关产品推荐
相关产品推荐

