快好知 kuaihz

Excel | N多人分组完成M个项目,统计每个人...

问题来源

后台一位朋友留言,说他们项目部所有的人,每五人为一小组,完成了很多项目。现在,要论功行赏,按分组名单,统计每人参与了哪些项目。

他问韩老师有没有公式,一次完成统计。

为了好讲述,韩老师将数据简化如下:

最终要完成:按照表一项目分组,完成二人员参与项目统计。

公式实现

在H2单元格输入公式

=IFERROR(INDEX($A$1:$A$7,SMALL(($G2<>$B$2:$D$7)*100+ROW($B$2:$D$7),COLUMN(A$1))),""),以Ctrl+Shift+Enter三键组合结束,然后公式向右向下填充,即可得到结果。

如下图:

公式实现

公式解析

{=($G2<>$B$2:$D$7)*100}

将G2的人员“王一”,依次与B2:D7姓名相比较,如果不同,返回TURE,如果相同,返回FALSE。再将结果一一乘以100,凡是不等于“王一”的,返回100,等于“王一”的,返回0。

结果如下:

{0,100,100;100,100,100;100,100,100;100,100,100;100,0,100;0,100,100}(为方便描述,称为数组一)

如果行数较多,可以乘以更大的10000等。

{=($G2<>$B$2:$D$7)*100+ROW($B$2:$D$7)}

将数组一结果依次与所在行相加,

返回结果:

{2,102,102;103,103,103;104,104,104;105,105,105;106,6,106;7,107,107 }(为方便描述,称为数组二)

SMALL(($G2<>$B$2:$D$7)*100+ROW($B$2:$D$7),COLUMN(A$1))

在数组二中,取第“COLUMN(A$1)”小的数值。A1是第一列,也就是取数值二中第1小的数值2;当公式向右填充一列,变为取第“COLUMN(B$1)”小的数值,即第2小的数值6;当公式再向右填充一列,变为取第“COLUMN(C$1)”小的数值,即第3小的数值7。

这样,得到数组:

{2;6;7;102;……}

INDEX($A$1:$A$7,SMALL(($G2<>$B$2:$D$7)*100+ROW($B$2:$D$7),COLUMN(A$1)))

当此公式在H2时,在A1:A7内,取出第2行的项目一;

公式向右填充一列,到I列,在A1:A7内,取出第6行的项目五;

公式再向右填充一列,到J列,在A1:A7内,取出第7行的项目六;

再往后取第102……行,是不存在的。

=IFERROR(INDEX($A$1:$A$7,SMALL(($G2<>$B$2:$D$7)*100+ROW($B$2:$D$7),COLUMN(A$1))),"")

用IFFERROR函数,如果查找错误,返回空值。

公式,理解起来有一定难度,韩老师建议大家下载素材,一步一步写出来。

写的时候,注意使用“公式求值”功能对公式进行一步一步的运算,公式求值能够帮助你一步一步分析公式,如下动图:

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:分组  分组词条  多人  多人词条  每个  每个词条  完成  完成词条  统计  统计词条  
办公

 Word高手常用技巧总结,难怪别...

十个让你大跌眼镜的快捷键1. 快速插入分割线,只需要输入三个“=*。在编辑文档时,出于美观和醒目的需要,有时候需要为文档添加一些分隔线,如果利用键盘上的特殊符号...(展开)