在Google中,我试图编写一个查询(而不是一个独立的数据透视表或脚本),该查询根据一个if/ Pivot语句的计算值进行分组。
这里是我的示例数据:
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
但我想要做的是把日子安排在特定的桶里。桶和期望的输出将是这个想要的输出。
Days count
0 1
1 1
2-5 2
6-9 1
10+ 1
因此,这几乎是一个“如果0那么'0',如果1那么'1',如果>1和<=5然后'2-5',等等,在末尾有一个组?这将如何写成查询格式?
发布于 2018-10-04 12:49:53
如果您在(例如) G2:G6中有每个范围的上限,您可以使用频率来获得结果:
=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)分组到一个单独的bin中。
如果您愿意,可以使用一系列嵌套的If语句或(更好的) vlookup重新编码原始的日值,并将结果传递给具有分组的查询。
发布于 2018-10-04 15:39:13
如果允许使用辅助列(为了排序而稍微作弊),则只需将A1更改为A2即可应用现有公式:
插入一个新的ColumB,并在B2中复制如下:
=lookup(C2,{0,1,2,6,9},{"00","01","02-5","06-9","10+"})
https://stackoverflow.com/questions/52630619
复制相似问题