根据日期范围计算滚动平均值

Calculate rolling average based on date range

我有一个 google 表格,我每天早上都会用它来称体重

第 1 列是自动生成的时间戳。重量是我输入的值

Timestamp   Morning weight
7/1/2021 8:41:55    185
7/2/2021 5:50:54    185.8
7/4/2021 8:16:58    186.2
7/5/2021 9:45:23    184
7/6/2021 5:56:06    184.2
7/7/2021 6:52:24    183.4
7/8/2021 4:37:18    184.8
7/9/2021 5:46:20    183.8
7/10/2021 10:07:58  184.2
7/11/2021 9:07:25   182.4
7/12/2021 6:39:53   182.8
7/14/2021 5:36:02   183.4
7/15/2021 6:14:42   181.2
7/16/2021 5:30:41   182.6
7/18/2021 7:00:43   181
7/19/2021 5:14:21   180.6
7/22/2021 5:54:42   180.2
7/23/2021 5:46:52   179.4
7/24/2021 8:14:06   180.8
7/25/2021 6:58:56   180.4
7/29/2021 7:25:15   180.8
7/30/2021 6:09:04   180.4
7/31/2021 7:34:20   180
8/1/2021 8:35:40    179.6
8/2/2021 5:48:48    178
8/3/2021 5:36:37    179.4
8/5/2021 5:53:58    179.8
8/6/2021 5:43:34    179

我想计算一下我每周的平均体重。有些日子忘记输入数据,所以我想根据可用的计算:

7/19/2021    181.76 // calculated from 180.6 + 181 + 182.6 + 181.2 + 183.4` / 5
7/26/2021    180.2 // calculated from 180.4 + 180.8+179.4 + 180.2` / 4

这是一张可能有用的电子表格图片。我根据日期

对我想要的 运行ge 值进行了颜色编码

我以前尝试过/正在做的事情

我尝试使用 VLOOKUP 公式,但我认为它无法添加滚动计算。 INDEX/MATCH 似乎也可行,但不确定它是如何工作的

在我刚刚输入原始数据旁边的另一列之前,运行这个

=ROUND(AVERAGE('Daily Measurements'!B89:B96),1)`

然后运行一个对应的VLOOKUP。

但我需要一个更坚固的

我目前正在根据 PreviousDate + 7 公式

计算每个星期一的日期

尝试:

=INDEX(QUERY({WEEKNUM(A2:A, 2), B2:B},
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label Col1'week number'"))

更新

四舍五入到小数点后一位:

=INDEX(TEXT(QUERY({WEEKNUM(A2:A, 2), B2:B},
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label Col1'week number'"), {"@", "0.0"}))

或:

=INDEX(TRUNC(QUERY({WEEKNUM(A2:A, 2), B2:B},
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label avg(Col2)''"), 1))

或:

=INDEX(ROUND(QUERY({WEEKNUM(A2:A, 2), B2:B},
 "select Col1,avg(Col2)
  where Col2 is not null 
  group by Col1 
  label avg(Col2)''"), 1))