不可能的透视表之如何在透视表中显示文本

我们,让Excel变简单

我们面对的问题很简单。

假设有以下数据:

数据中记录了各部门的人员

现在我们需要将这份数据进行如下的展示:

我们有什么方法能快速做出这个报表,并且这个过程还能够自动化:即如果源数据有变化,这个结果还能够自动刷新?

首先,我们必须排除使用函数的做法。Excel的函数确实无所不能,肯定可以实现这个报表,某种程度上也可以说是自动的,但是如果部门增加或者部门增减人员,往往需要调整公式,因此不能完全自动化。

其次,我们要排除VBA的方法,第一有点杀鸡用牛刀的感觉。第二,大部分不掌握这个方法。

再其次,数据透视表是肯定做不出这个报表的!

很多人遇到这种情况往往就会直接手工完成了。其实有简单的办法实现这个需求,今天我们介绍两种方法。

使用Power Pivot完成报表

我们以前介绍过一个进行文本透视的方法(详细内容看这篇文章),利用其中的方法,可以做出这样的结果:

跟我们想要的结果很接近,但是还差点。

当然,你可以在这个基础上用分列做出这个报表来,但是这就是一个手工的工作了,不能实现自动化的要求。

我们可以变动一下,首先在源数据表上添加一列,使用公式:

=COUNTIF($B$3:B3,[@部门])

然后在“Power Pivot”选项卡中,点击“添加到数据模型”:

然后在“Power Pivot”选项卡中,点击“度量值”,“新建度量值”:

使用下面的公式创建度量值“部门人员”:

=CONCATENATEX('表1','表1'[人员],",")

进入“Power Pivot for Excel”界面,在“主页”选项卡下,点击“数据透视表”:

选择在新工作表中创建透视表,得到的透视表如下:

将部门放置行标签字段,辅助列放在列标签字段,度量值“部门人员”放在值字段:

得到透视表如下:

这就是我们要求的结果

使用Power Query完成报表

我们在前面刚开始介绍Power Query的时候就讲过,Power Query是一个非常强大的数据处理工具包,它甚至可以不借助透视表就可以完成很多形式的报表。今天讲的就是一个例子。

选中数据区域的任意单元格,在“数据”选项卡中,点击“从表格”:

弹出“Power Query编辑器”:

在“转换"选项卡下,点击”分组依据":

在分组对话框中,将分组依据选为“部门”,新列名修改为“分组”,操作选为“所有行”:

点击确定后,得到:

将上面的公式修改为:

= Table.Group(更改的类型, {"部门"}, {{"分组", each Table.AddIndexColumn(_,"a",1,1)}})

得到结果:

每一个分组表都有一个索引列

点击分组列名称右边的图标:

选择人员和“a"(即每组的索引列):

得到表格:

选中最后一列“分组.a”,在“转换”选项卡下,点击“透视列”:

在对话框中,将值列选择为“分组.人员”,点击高级选项,将聚合值函数选择为“不要聚合”:

点击确定后,得到下表:

现在,只要点击关闭并上载:

就可以得到需要的结果:

大功告成!
总结

这是一个很有代表性的例子,也是“文本透视”最常用的方式。但是无论是传统的数据透视表还是Power Pivot都不能直接得到这个结果。如果在原始数据上添加一个辅助列,用Power Pivot可以得到这个结果。如果不想修改原始数据的话(在很多场景下,不能允许我们修改原始数据),我们就可以使用最后一个方法:用Power Query实现这个结果。

在自动化数据处理的大前提下,Power Query可以起到很大的作用,就像这个例子展示的那样,有很多原来需要用透视表或超级透视表完成的报表,使用Power Query可以轻松完成。

在这个例子中,有一步我们修改了菜单项命令产生的结果,用了一个原来没见过的公式,大家不要担心,后面我们会陆续为大家介绍这些公式的用法。

关注本公众号,点击底部菜单“联系客服”,与客服取得联系,索取“不可能的数据透视表之五”案例文件

END
关注ExcelEasy
关于Excel的一切问题,你都可以在这里找到答案
(0)

相关推荐