Excel中列字段间一对多时,如何全部列出【D25-2020.6.29】

今日学习来源:微信公众号“ Excel之家ExcelHome”

原文链接:https://mp.weixin.qq.com/s/jrZjO6zlhmeNydoCsu7n8Q

今天学习的是如何批量提取Excel一对多时的“多”,原文主要介绍了Power Pivot、vlookup+辅助列两种方法,补充数组函数方法

【案例】

下图是某公司各部门的部分员工信息

现在要根据这些数据,按部门进行汇总。分别得到各部门的人员详单、人数和平均年龄:

方法1:用“辅助列+vlookup”取人员详单,再用countif、averageif求人数和平均年龄

方法2:用“数组函数”取人员详单,再用countif、averageif求人数和平均年龄

=INDEX($B$3:$B$101,SMALL(IF($A$3:$A$101=$F3,ROW($A$3:$A$101)-ROW($A$2),99),COLUMN(A1)))&""

简单解释下:

1、用index函数从姓名区域中查找满足部门条件的姓名;

需要特别说明的是,此处选取区域时一定要“超过非空数据区域 且 包含small函数中的k”,否则会返回#REF!

2、用if函数判断部门是否满足对应条件,并返回对应数值

如果满足,取该记录在对应区域的行号:ROW($A$3:$A$101)-ROW($A$2)

如果不满足,取一个较大值(超过数据区域的行数)

3、用small函数从1开始,逐个取出if的数值结果

4、函数外用&""限定超出区域的部分返回空

方法3:用power pivot  +  透视表

步骤1

单击数据区域任意单元格,在【power pivot】选项卡下单击【添加到数据模型】按钮。

如果你的Excel中没有显示这个选项卡,可以依次单击【文件】→【选项】,打开【Excel选项】对话框。然后按下图所示步骤设置即可。

步骤2

单击数据区域底部的任意空白单元格,在编辑栏输入公式:

人员详单:=CONCATENATEX('表2','表2'[姓名],",")

CONCATENATEX函数的作用是按照指定的间隔符号来合并多个字符串。

用法是:

=CONCATENATEX(表名,表名[字段名],间隔符号)

单击其他空白单元格,在编辑栏输入公式:

人数:=COUNTA('表2'[姓名])

COUNTA函数的作用是对指定字段中的非空单元格进行计数。

再次单击其他空白单元格,在编辑栏输入公式:

平均年龄:=AVERAGE('表2'[年龄])

AVERAGE函数的作用,是计算指定字段的平均值。

步骤3

插入数据透视表。

在【数据透视表字段列表】中,依次将“部门”拖动到行区域,将“人员详单”、“人数”和“平均年龄”拖动到值区域。

右键单击透视表中的“总计”→删除总计。

最后单击数据透视表,在【设计】选项卡下选择一种内置的样式效果:

你可能感兴趣的:(Excel中列字段间一对多时,如何全部列出【D25-2020.6.29】)