ExcelVBA 解決篩選、分組、去重、記數(shù)
網(wǎng)友提問:


這個網(wǎng)友的問題剛剛在PowerQuery里回復(fù)過
https://www.bilibili.com/read/cv20064690
ExcelVBA第三季我證明了,PowerQuery可以在大多數(shù)案例中很簡單的代替字典。
而且去重這件事情ExcelVBA也有相關(guān)方法可以代替字典
看完ExcelVBA第二三季,你會有不一樣的認(rèn)知
如果您想練習(xí)字典的寫法,可以參考下面一位ExcelHome版主的寫法
https://www.bilibili.com/video/BV1uY4y1q77n
我孫興華是全網(wǎng)出了名的偷懶,還記得我經(jīng)常說的一句話嗎?
高手一小時寫一個運(yùn)行1秒中的代碼,孫興華3分鐘寫一個運(yùn)行幾分鐘的代碼。
(時間只是個比喻,我寫代碼重在快速解決問題,而不是研究代碼運(yùn)行速度,因?yàn)楣ぷ餍再|(zhì)不同,我是給自己用,不是賣軟件,我解決問題大多是從自己筆記上直接復(fù)制粘貼后修改一下就搞定了,我每隔幾年就花錢升級一次電腦,要的就是它處理數(shù)據(jù)的速度,如果都讓我用大腦處理,我升級電腦做什么?)
以下步驟每一步都是在上一步的基礎(chǔ)上添加代碼:
第一步:篩選

篩選第3列大于0的
運(yùn)行后返回:

我們將這個結(jié)果復(fù)制到一個新工作表中
第二步:判斷工作表是否存在不存在就創(chuàng)建,并復(fù)制
ExcelVBA第二季第9課

我們需要復(fù)制到一個新的工作表中,比如這個工作表名叫孫興華,那么我們需要判斷一下,如果孫興華這張工作表不存在,我們就創(chuàng)建,否則就不創(chuàng)建
ExcelVBA第三季第6課學(xué)習(xí)的判斷工作表是否存在

ExcelVBA第二季第4課學(xué)的創(chuàng)建工作表

于是我們可以寫成:
返回結(jié)果:

第三步:去重(避開字典嵌套)
我知道字典嵌套可以實(shí)現(xiàn),但是那寫起來麻煩,我講起來也不容易,我ExcelVBA第三季講了刪除重復(fù),ExcelVBA第17回,這個功能可以在這里代替字典嵌套

于是我們寫成:
返回:

現(xiàn)在你用數(shù)據(jù)透視表就可以搞定了

第四步:如果想全部使用代碼處理
ExcelVBA第三季第22集

先呼叫透視表,做出結(jié)果復(fù)制,選擇粘貼到sheet1,刪除孫興華那張表
所使用的代碼在我課程中均有出處,以下是完整代碼,運(yùn)行Sub shishi()這個過程
返回結(jié)果:


本文章配套課件已經(jīng)發(fā)到評論區(qū)了

ExcelVBA教程:https://www.bilibili.com/video/BV1rt4y1a72y