Excel那些看起很难,其实很简单的问题!DAX初体验

问题难不难,除了知识储备,还有看问题的角度!

我们来看第一个“难题”,体育测试,每个人测试数次,现在需要根据每个人测试顺序,添加编号,比如张三,第一次是1,第二次就是2,依次类推!

难题1 | 按照出现的顺序编号

=COUNTIF($A$2:A2,A2)

知识点(已写专题)

1、COUNTIF函数的使用:函数 | COUNTIF用法大全

2、单元格引用方式:基础 | Excel中单元格的引用方式,读这篇就够了!

该方法同样适用于,重名检测,只要出现大于1的就是重复的姓名。

比如我们只需要第一次或者第二次的出现的,都可以直接筛选,非常方便!

比如我们要查找第二次的成绩,直接筛选2即可!

本案例如果是新手,可能会出现逐个姓名筛选,然后一个一个编号!如果数据较大,是一个很大的工作量!

就这上面的案例,我们继续,求出每个人最高的三次成绩平均值,如果不足三次直接取平均值!

难题2 | 最高的三次成绩平均值

第一步:按照根据姓名和成绩排序

注意成绩降序排序,从大到小!

第二步:使用公式AVERAGEIFS

=ROUND(AVERAGEIFS(C:C,B:B,"<=3",A:A,E2),)

如果你觉得上面的做法不够酷,可以使用公式

▼我是一条数组公式,请使用Ctrl+Shift+Enter录入我

=ROUND(AVERAGE(LARGE(IF($A$2:$A$15=$E2,$C$2:$C$15),ROW(INDIRECT("1:"&MIN(3,COUNTIF(A:A,E2)))))),)

有测试不满三次的情况!就按实际次数取平均值!用3和测试次数取小即可

当然,如果你是一个数据分析人员,懂Power Pivot,你还可以使用自己认为更酷、更合适的DAX来处理

▼最高三次成绩平均值度量值

=IF(HASONEVALUE('表1'[姓名]),ROUND(CALCULATE(AVERAGEX(TOPN(3,'表1','表1'[测试成绩],DESC),'表1'[测试成绩])),0),BLANK())

小编是一个DAX初学者!如果有什么写的不适合的地方,欢迎指正!

最近我们也一直在分享Power Query,要不我们也来写一下!

▼Power Query中的M函数依据简洁

= Table.Group(更改的类型,"姓名",{"最高三次成绩平均值",each Number.Round(List.Average(List.MaxN([测试成绩],3)),0)})

List.MaxN处理此类问题真是非常的简洁!M函数中有很多List函数,他们极大的丰富了数据的提取、整理和聚合!

难题3 | 一共有几人测试?

每个人有多次测试,所以应该对姓名去重计数

最简单的 ,自然就是数据透视表,拖拽一下即可搞定!

你依然觉得,不够酷,非要使用函数处理也行!

=SUMPRODUCT(1/COUNTIF($A$2:$A$15,$A$2:$A$15))

公式解读:COUNTIF去重计数解读

当然说回来,什么方法好?什么最简单!适合自己就是最好的!每个人所掌握的知识和方向不同,普通出入职场的办公小白,统一推荐第一种,能解决问题,比什么花里胡哨都重要!

本文由“壹伴编辑器”提供技术支持

我是一条自我推荐的广告,年终了,您或许用得上我!

(0)

相关推荐