Google 工作表 - 按 If/Then 存储桶分组,计算值

Google Sheets - Group By If/Then Buckets, Calculated Values

在 Google 表格中,我正在尝试编写一个查询(不是独立的 Pivot Table 也不是脚本),它根据基于 if/then 的计算值进行分组声明。

这是我的示例数据:

Name    Days
Bob     0
Ed      1
Frank   2
Joey    4
Deluth  7
Henry   12

按 B 列分组非常简单:

=QUERY(A1:B7,"SELECT B, COUNT(B) GROUP BY B")

输出:

Days    count
0       1
1       1
2       1
4       1
7       1
12      1

但我想做的是将日子分组到特定的桶中。桶和所需的输出将是这个 desired output:

Days    count
0       1
1       1
2-5     2
6-9     1
10+     1

所以它几乎是一个“if 0 then '0', if 1 then '1', if >1 AND <=5 then '2-5', etc., with a Group By at the end?如何这将以 QUERY 格式编写吗?

如果每个范围的上限都在(比如)G2:G6,您可以使用 Frequency 得到结果:

=frequency(B2:B,G2:G)

然后你可以将它与你的 bin 单元格结合起来,将两列放在一起:

=ArrayFormula({D2:D6,frequency(B2:B,G2:G)})

从 bin 单元格中提取上限有点笨拙,但您可以在没有辅助列的情况下像这样将它们放在一起:

=ArrayFormula({D2:D6,frequency(B2:B,--(right(D2:D5,len(D2:D5)-iferror(find("-",D2:D5),0))))})

请注意,除了显示目的外,您不需要定义“10+”范围,频率会自动将所有剩余值(9 以上)分组到一个单独的容器中。

如果您愿意,可以使用一系列嵌套的 if 语句或(更好的)vlookup 重新编码原始日期值,并将结果传递给具有分组的查询。

如果允许使用辅助列(为了排序而作弊),您只需将 A1 更改为 A2 即可应用现有公式:

插入一个新的 ColumB 并在 B2 中向下复制以适应:

=lookup(C2,{0,1,2,6,9},{"00","01","02-5","06-9","10+"})