排序过滤值的平均子集

问题描述 投票:0回答:1

我有以下一组价值观:

col1 第 2 栏
1 20
2 155
3 170
4 177
5 291
6 559
7 794
8 820
9 1,198
10 1,240
11 1,259
12 1,537
13 1,613
14 1,876
15 1,949
16 1,950
17 2,274
18 2,372
19 2,640
20 3,030
21 3,126
22 3,318
23 3,656
24 4,250
25 4,256
26 4,469
27 6,414
28 10,504
29 10,928
30 11,445
31 16,216

第二列的值是使用以下方式生成的:

=sort(FILTER(paste!M2:M, paste!$A$2:$A = A2, paste!$B$2:$B = B2, paste!$C$2:$C = C2, paste!$F$2:$F > 0))

我想在 3 个单独的单元格中进行 3 次计算。我基本上想计算 3 组的平均值,但我没有均匀地划分各组。我通过获取总条目数(在本例中为 31)并使用以下公式来划分这 3 组:

=QUOTIENT(AH2, 3)

其中 AH2 =31。在本例中,结果为 10。所以我想找到前 10 个和后 10 个值以及中间组的平均值。

对于中间组,我使用公式

=QUOTIENT(count(B1:B31, 3) + MOD(countB1:B31, 3)

等于 11。所以我想要中间 11 个值的平均值。

所以,我的问题是:

是否可以在Google表格中找到排序和过滤值子集的平均值,其中可以使用序列中的第n个数字指定子集的开始和结束?在这种情况下,我想找到:

  • 第 1 组:最小 10 个值的平均值**

  • 第 2 组:第 11 个最小到第 21 个最小的平均值

  • 第 3 组:第 22 个最小到第 31 个最小(最大)的平均值

我想要公式作为参考,而不是绝对数字(1-10,11-21,22-31),它会通过计算非空白条目的总数并将其分成 3 个来分割组,如下所示:

=QUOTIENT(count(B1:B31), 3)

对于第 1 组和第 3 组,然后

=QUOTIENT(count(B1:B31, 3) + MOD(countB1:B31, 3)

对于中间组。我在

的单独部分中使用了小计
=SUBTOTAL(101,paste!I$2:I)

但我认为我不能将其与部分数据的升序/排序序列一起使用。

google-sheets filter average subtotal
1个回答
0
投票

在单元格 E2 中尝试以下公式:

=transpose(map({1,G2+1,G2*2+2},{G2,G2*2+1,G2*3+1},lambda(s,e,average(INDIRECT("B"&s&":B"&e)))))

在下面所示的示例中:

  • C 列中显示的平均值是手动计算的。
  • 单元格 G2 包含一个公式:
    =QUOTIENT(count(B1:B31), 3)

样品

sample

© www.soinside.com 2019 - 2024. All rights reserved.