如何用小于Excel的数字分组

时间:2019-01-22 12:51:46

标签: excel pivot-table

我在数据透视表中有一个很大的数据表,其中包含许多数字值,我想按以下方式对“重量”列中的值进行分组: 值小于

1000
1500
2000
3000
4000
5000
6000
etc...

然后在其旁边有一个“计数”列,计算有多少个小于1000,小于1500的值,依此类推。这是一个非常大的表,将具有成千上万个值,这就是为什么将它们压缩起来要容易得多的原因。谢谢。

当前表:

Weight

3944      
3300
1000
2993
442
9388
2992
2281
2991

所需表:

Weight   Count

<1000      1
<1500      1
<2000      0
<3000      4
<4000      2
<5000      0
<6000      0
<7000      0
<8000      0
<8000      0
<9000      0
<10000     1

1 个答案:

答案 0 :(得分:1)

一个无需添加任何辅助列即可解决的有趣问题...

这就是我要做的:

enter image description here

=INDEX(
    FREQUENCY(
        $A$2:$A$10,
        RIGHT($C$2:$C$13,LEN($C$2:$C$13)-1)-1
    ),
    MATCH($C2,$C$2:$C$13,0)
)

我将从内部函数开始,然后向外展开。

RIGHT($C$2:$C$13,LEN($C$2:$C$13)-1)-1

这将获取“重量(最大)”列中的字符串(例如“ <1000”),删除“ <”符号,并从结果中减去1(999,因为我们希望“小于” 1000,而不是“小于或等于” 1000)。

接下来,FREQUENCY函数接受2个参数。 首先是我们的实际重量范围。 第二个是一组用于将这些权重放入的不同截止值的数组(这是我们根据上面的公式得出的结果)。

因为FREQUENCY返回一个计数数组,所以我们必须使用INDEX选择希望返回的数组中的特定值。 INDEX的第一个参数是频率返回的值的数组。 第二个是我们希望返回的值的索引。我们可以通过多种方式实现这一目标:

我们可以使用ROW()-1,但是如果每次从表格顶部移动表格,表格都会损坏。 我们可以添加一个辅助列(包含增量数字)来记录“体重指数”,但是,我想尽可能地减少辅助列的数量,在这种情况下,可以通过以下简单方法解决:MATCH

我们只需使用MATCH即可返回重量列表中当前重量组的索引:

MATCH(<the current weight group>, <the complete weight group range>, <0 means we are looking for an exact match>)

我希望这是有道理的。当您进入数组时,事情变得复杂。如果您需要进一步说明,请告诉我。