Google Spreadsheet动态批量引用API数据及按作者筛选列问题
解决Google Sheets自动更新数据的两个问题
问题a:批量引用间隔行数据(自动适配更新)
针对API返回的循环序列数据(如A、B、C、D重复),要批量提取间隔行(如E1、E4、E7,步长3),可以用INDEX+SEQUENCE组合的动态数组公式,无需手动拖拽,数据更新后自动同步:
=INDEX(E:E, SEQUENCE(ROUNDUP(COUNTA(E:E)/3, 0), 1, 1, 3))
COUNTA(E:E):统计E列非空单元格总数,确定需要提取的行数上限ROUNDUP(...,0):向上取整,避免遗漏最后一行不完整的循环数据SEQUENCE(...,1,1,3):生成起始为1、步长为3的序列(1,4,7...),对应目标行号INDEX(E:E, ...):根据序列提取E列对应行的数据
问题b:动态按作者拆分列组(适配自动更新)
假设原始数据结构为每行包含作者、价格、标题、出版年份,要将每个作者的数据单独分配到一组列(如A-D列存作者1,E-H列存作者2),可通过以下步骤实现:
步骤1:获取唯一作者列表
在空白单元格(如J1)输入公式,自动提取所有不重复的作者:
=UNIQUE(FILTER(A:A, A:A <> ""))
步骤2:动态生成按作者拆分的列组
在目标起始单元格(如A1)输入数组公式,自动为每个作者生成4列数据(作者、价格、标题、年份),且随原始数据更新自动调整:
=BYCOL(SEQUENCE(1, COUNTA(J:J)*4), LAMBDA(col, LET( auth_index, CEILING(col/4, 1), field_index, MOD(col-1, 4)+1, FILTER(CHOOSECOLS(A:D, field_index), A:A = INDEX(J:J, auth_index)) ) ))
SEQUENCE(1, COUNTA(J:J)*4):根据作者数量生成对应列数(每个作者4列)auth_index:计算当前列属于第几个作者的组field_index:计算当前列是作者/价格/标题/年份中的第几个字段CHOOSECOLS(A:D, field_index):提取原始数据中对应字段的列FILTER(..., A:A = INDEX(J:J, auth_index)):筛选出对应作者的所有数据行
内容的提问来源于stack exchange,提问作者DiepStats
相关产品推荐
相关产品推荐

