首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google按If/然后桶分组,计算值

Google按If/然后桶分组,计算值
EN

Stack Overflow用户
提问于 2018-10-03 15:28:08
回答 2查看 4.9K关注 0票数 1

在Google中,我试图编写一个查询(而不是一个独立的数据透视表或脚本),该查询根据一个if/ Pivot语句的计算值进行分组。

这里是我的示例数据:

代码语言:javascript
运行
复制
Name    Days
Bob     0
Ed      1
Frank   2
Joey    4
Deluth  7
Henry   12

按B栏分组相当直接:

代码语言:javascript
运行
复制
=QUERY(A1:B7,"SELECT B, COUNT(B) GROUP BY B")

其中产出:

代码语言:javascript
运行
复制
Days    count
0       1
1       1
2       1
4       1
7       1
12      1

但我想要做的是把日子安排在特定的桶里。桶和期望的输出将是这个想要的输出

代码语言:javascript
运行
复制
Days    count
0       1
1       1
2-5     2
6-9     1
10+     1

因此,这几乎是一个“如果0那么'0',如果1那么'1',如果>1和<=5然后'2-5',等等,在末尾有一个组?这将如何写成查询格式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-04 12:49:53

如果您在(例如) G2:G6中有每个范围的上限,您可以使用频率来获得结果:

代码语言:javascript
运行
复制
=frequency(B2:B,G2:G)

然后,您可以将其与bin单元格组合起来,将这两列组合在一起:

代码语言:javascript
运行
复制
=ArrayFormula({D2:D6,frequency(B2:B,G2:G)})

从bin单元格中提取上限有点尴尬,但是您可以像这样把它放在一起,而不需要助手列:

代码语言:javascript
运行
复制
=ArrayFormula({D2:D6,frequency(B2:B,--(right(D2:D5,len(D2:D5)-iferror(find("-",D2:D5),0))))})

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

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

票数 4
EN

Stack Overflow用户

发布于 2018-10-04 15:39:13

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

插入一个新的ColumB,并在B2中复制如下:

代码语言:javascript
运行
复制
=lookup(C2,{0,1,2,6,9},{"00","01","02-5","06-9","10+"})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52630619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档