If statement Google Sheets-按If/Then bucket、计算值分组

If statement Google Sheets-按If/Then bucket、计算值分组,if-statement,google-sheets,group-by,google-sheets-query,If Statement,Google Sheets,Group By,Google Sheets Query,在GoogleSheets中,我试图编写一个查询,而不是一个独立的透视表或脚本,它根据基于if/then语句的计算值进行分组 以下是我的示例数据: 按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 但我要做的是把这些日子分到特定的桶里。铲斗和期望输出应为该期望输出:

在GoogleSheets中,我试图编写一个查询,而不是一个独立的透视表或脚本,它根据基于if/then语句的计算值进行分组

以下是我的示例数据:

按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
但我要做的是把这些日子分到特定的桶里。铲斗和期望输出应为该期望输出:


所以它几乎是一个if 0然后是'0',if 1然后是'1',if>1和如果你在G2:G6中有每个范围的上限,你可以使用频率来得到结果:

=frequency(B2:B,G2:G)
然后,您可以将其与bin单元格组合,以将两列合并在一起:

=ArrayFormula({D2:D6,frequency(B2:B,G2:G)})
从bin单元格中提取上限有点尴尬,但您可以像这样将其组合在一起,而无需使用helper列:

=ArrayFormula({D2:D6,frequency(B2:B,--(right(D2:D5,len(D2:D5)-iferror(find("-",D2:D5),0))))})
请注意,您不需要定义“10+”范围,但出于显示目的,频率会自动将9以上的所有剩余值分组到一个单独的存储箱中


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

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

=frequency(B2:B,G2:G)
然后,您可以将其与bin单元格组合,以将两列合并在一起:

=ArrayFormula({D2:D6,frequency(B2:B,G2:G)})
从bin单元格中提取上限有点尴尬,但您可以像这样将其组合在一起,而无需使用helper列:

=ArrayFormula({D2:D6,frequency(B2:B,--(right(D2:D5,len(D2:D5)-iferror(find("-",D2:D5),0))))})
请注意,您不需要定义“10+”范围,但出于显示目的,频率会自动将9以上的所有剩余值分组到一个单独的存储箱中


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

如果允许使用辅助列,则为了排序,您可以应用现有公式,只需将A1更改为A2:

在B2中插入一个新的柱和,并向下复制以适合:

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

如果允许使用一个helper列,那么为了排序,您可以应用现有公式,只需将A1更改为A2:

在B2中插入一个新的柱和,并向下复制以适合:

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

真棒的回答汤姆,不知道频率!谢谢-yes Frequency是一个非常有用的函数,在excel中用于计算唯一值,而在Google工作表中则更少,因为你有unique&CountUnique函数,而且对于重复的字符或数字序列也很有用。非常棒的回答Tom,不知道频率!谢谢-yes Frequency是一个非常有用的函数,在excel中用于计算唯一值,而在Google工作表中使用较少,因为您有unique和CountUnique函数,并且对于重复的字符或数字序列也很有用。