如何在Google Sheets中查询数据以获取每日变化而非总计表格?
在Google Sheets中计算视频每日新增浏览量的方法
方法一:用窗口函数直接从原始数据生成结果
如果你的原始数据包含日期、视频标题、累计浏览量三列(对应示例表结构),可以用QUERY结合窗口函数LAG直接计算每日新增,自动处理新视频的情况:
=QUERY(SORT(Sheet1!A:C, 2, 1, 1, 1), "select Col2, Col1, Col3 - IFNULL(LAG(Col3) OVER (PARTITION BY Col2 ORDER BY Col1), 0) where Col1 is not null label Col2 '视频标题', Col1 '日期', Col3 - IFNULL(LAG(Col3) OVER (PARTITION BY Col2 ORDER BY Col1), 0) '每日新增浏览量'")
- 逻辑说明:
SORT(Sheet1!A:C, 2, 1, 1, 1):先按视频标题升序、日期升序排序原始数据LAG(Col3) OVER (PARTITION BY Col2 ORDER BY Col1):按视频分组,取当前行的前一行累计浏览量Col3 - IFNULL(..., 0):当日累计减前一日累计,新视频无前置数据时直接取当日累计(减0)- 最后用
label重命名表头,让结果更清晰
方法二:基于已有的透视表计算新增
如果你已经有按视频×日期汇总的累计值透视表(行是视频,列是日期),可以用批量公式计算相邻日期的差值:
假设透视表的日期列从B列开始,首行是日期,首列是视频标题,数据从B2开始,在透视表右侧插入新列,输入公式:
=ARRAYFORMULA(IF(C2:Z="", "", IF(B2:Y="", C2:Z, C2:Z - B2:Y)))
- 逻辑说明:
C2:Z是当前日期的累计值,B2:Y是前一天的累计值- 若当前日期有数据但前一天无(新视频),直接显示当前累计值;否则用当日减前日得到新增
ARRAYFORMULA批量应用到整列,无需手动拖拽
如果需要动态适配新增的日期列,可以用动态范围公式:
=ARRAYFORMULA(IF(OFFSET(B2,0,1,ROWS(B2:B),COUNTA(B1:1)-1)="", "", IF(B2:OFFSET(B2,0,COUNTA(B1:1)-2)="", OFFSET(B2,0,1,ROWS(B2:B),COUNTA(B1:1)-1), OFFSET(B2,0,1,ROWS(B2:B),COUNTA(B1:1)-1) - B2:OFFSET(B2,0,COUNTA(B1:1)-2))))
这个公式会自动识别首行的日期列数量,适配新添加的日期。
内容的提问来源于stack exchange,提问作者Reid
相关产品推荐
相关产品推荐

