强大的分组:给每个类别分别添加索引编号
在前面讲《怎么在每个科目(分类)内容的后面加3个空行?还涉及分组依据的核心原理……》的时候,提到“分组依据”功能的核心原理,在此重复一下:分组的过程就是对同一类内容先分好,或者说挑出了每一组所包含的所有内容,然后再针对各类内容分别进行后续的聚合(计算)。
如果还不是很理解,那建议回到原文章再看一下。
接下来,我们来看一下今天的问题:怎么给表里的每一类内容分别添加索引?比如有表如下图所示:
希望对各省份下的城市加个编码,如下图所示:
对于这个问题,我们常规的解法是先添加索引列,然后根据索引列所标志的当前行应用Table.RowCount和Table.SelectRows函数来得到到当前行的某分类的所有行数,从而得到相应的结果,具体请参考文章《非标准报表-2:领导又要换个角度欣赏报表,那就满足他!》。
使用该方法,其通用性较强,各种统计条件可以用Table.SelectRows函数来控制,但是,使用这个方法,一是公式写起来稍嫌繁琐,而且,如果数据量比较大,使用该方法的效率可能会比较低一些,因为需要一次又一次地去调用从第1行至当前行数据所形成的表。
那么,就这个问题来说,如果通过分组来解,你会发现,其方法更简洁,而且效率会非常高。具体如下:
Step 01 分组
显然,通过分组操作,我们将得到每个类别及其所对应的内容(表),如下图所示:
这时,假如说,我们可以对各类别(省份)下的每个表直接添加索引列,那么,不就可以得到各类别下的编号了吗?
于是,我们修改其中的代码如下:
即,将原来用下划线表示的每个表,通过Table.AddIndexColumn(_,"编号",1,1)来直接增加索引列——不要告诉我你记不住这个函数,因为即使记不住,你也很容易通过点击一下“添加索引列”的按钮来生成一个步骤,从而获得这个函数的写法——其实,很多时候都可以通过操作来获得Table类函数的使用方法。
接下来对数据进行展开即可,如下图所示:
结果如下图所示:
通过这个例子,你是否对分组依据的核心原理的理解又更加深入了?