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+"})
在 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+"})