使用PowerQuery、工作表函數(shù)、ExcelVBA處理同一件事
網(wǎng)友提問:

放大圖片






回答網(wǎng)友問題:

您是7月28日跟我要的課件,您8月2日咨詢我這個問題,真的是太快了,這么短的時間是學(xué)不到這么多了,我今天給您答案,但是,以現(xiàn)在的進(jìn)度您是很難理解代碼的。
不同語言有不同的優(yōu)勢和劣勢,這件事,PowerQuery比VBA優(yōu)勢大,兩個方法我都告訴您
一、PowerQuery方法
1、導(dǎo)入2張表


2、對成績表做分組依據(jù)
【轉(zhuǎn)換】-【分組依據(jù)】

這時成績表顯示成如下樣子

然后點擊匯總表,再點【主頁】~【合并查詢】~【合并查詢】
選擇成績表,用鼠標(biāo)選兩張表的姓名列,左外,確定

匯總表會顯示如下樣子

用鼠標(biāo)點擊 ,展開指定列

返回結(jié)果

最后,【添加列】~【條件列】
如圖選擇和填寫,最后點確定

返回結(jié)果:

二、工作表函數(shù)方法



PS: 如果使用Sumifs函數(shù),請先確認(rèn)成績表中的分?jǐn)?shù)列所有數(shù)字是數(shù)值類型,不要在設(shè)置單元格那里,要把分?jǐn)?shù)列復(fù)制,右鍵~選擇粘貼~以數(shù)值粘貼。如果在這一列中有部分是文本類型的值,可能會造成結(jié)果錯誤。
三、ExcelVBA方法
PS: ExcelVBA可以調(diào)用工作表函數(shù),但是我這里調(diào)用工作表函數(shù)就沒有講VBA方法的意義了
但是!用ExcelVBA做這件事,如果用到數(shù)組+字典,那代碼的意義何在?速度也沒有真正的快起來。可以參考這篇文章
https://www.bilibili.com/read/cv23460505
或者ExcelVBA第二季第22集最后一個案例

但是,我說過字典和數(shù)組在大多數(shù)情況下可以被代替
我們只需要知道文件在哪里?再會寫一句SQL語句,就搞定了
在ExcelVBA第二季? 第21集? 提供了現(xiàn)成的利用ADO中使用SQL語句實現(xiàn)表關(guān)系處理的模板
這些知識在AccessVBA中都有非常詳細(xì)的講解,同時我不建議大家利用Excel去操作其它數(shù)據(jù)庫。
代碼我們只需要修改兩處,一處是路徑,一處是SQL語句

代碼看著多,我就寫了2句,就搞定了,而且敢多,在ExcelVBA中,使用SQL比其它方法快。數(shù)據(jù)少時顯不出來,數(shù)量大了就體現(xiàn)出來了。
而且SQL語句,哪怕你不學(xué)SQL,看一個星期Access基礎(chǔ)篇,這種簡單的應(yīng)用,點點鼠標(biāo)就能得到SQL語句

代碼如下:
只是在處理不同的事情時,不同語言有不同優(yōu)勢,不存在哪個語言好的言論。

Powerquery教程:https://www.bilibili.com/video/BV1oa4y1j75e
Excel工作表函數(shù)教程:https://www.bilibili.com/video/BV1Z7411c7U6
ExcelVBA教程:https://www.bilibili.com/video/BV1rt4y1a72y