使用PowerQuery、工作表函数、ExcelVBA处理同一件事
网友提问:

放大图片






回答网友问题:

您是7月28日跟我要的课件,您8月2日咨询我这个问题,真的是太快了,这么短的时间是学不到这么多了,我今天给您答案,但是,以现在的进度您是很难理解代码的。
不同语言有不同的优势和劣势,这件事,PowerQuery比VBA优势大,两个方法我都告诉您
一、PowerQuery方法
1、导入2张表


2、对成绩表做分组依据
【转换】-【分组依据】

这时成绩表显示成如下样子

然后点击汇总表,再点【主页】~【合并查询】~【合并查询】
选择成绩表,用鼠标选两张表的姓名列,左外,确定

汇总表会显示如下样子

用鼠标点击 ,展开指定列

返回结果

最后,【添加列】~【条件列】
如图选择和填写,最后点确定

返回结果:

二、工作表函数方法



PS: 如果使用Sumifs函数,请先确认成绩表中的分数列所有数字是数值类型,不要在设置单元格那里,要把分数列复制,右键~选择粘贴~以数值粘贴。如果在这一列中有部分是文本类型的值,可能会造成结果错误。
三、ExcelVBA方法
PS: ExcelVBA可以调用工作表函数,但是我这里调用工作表函数就没有讲VBA方法的意义了
但是!用ExcelVBA做这件事,如果用到数组+字典,那代码的意义何在?速度也没有真正的快起来。可以参考这篇文章
https://www.bilibili.com/read/cv23460505
或者ExcelVBA第二季第22集最后一个案例

但是,我说过字典和数组在大多数情况下可以被代替
我们只需要知道文件在哪里?再会写一句SQL语句,就搞定了
在ExcelVBA第二季 第21集 提供了现成的利用ADO中使用SQL语句实现表关系处理的模板
这些知识在AccessVBA中都有非常详细的讲解,同时我不建议大家利用Excel去操作其它数据库。
代码我们只需要修改两处,一处是路径,一处是SQL语句

代码看着多,我就写了2句,就搞定了,而且敢多,在ExcelVBA中,使用SQL比其它方法快。数据少时显不出来,数量大了就体现出来了。
而且SQL语句,哪怕你不学SQL,看一个星期Access基础篇,这种简单的应用,点点鼠标就能得到SQL语句

代码如下:
只是在处理不同的事情时,不同语言有不同优势,不存在哪个语言好的言论。

Powerquery教程:https://www.bilibili.com/video/BV1oa4y1j75e
Excel工作表函数教程:https://www.bilibili.com/video/BV1Z7411c7U6
ExcelVBA教程:https://www.bilibili.com/video/BV1rt4y1a72y