ExcelVBA 解决筛选、分组、去重、记数
网友提问:


这个网友的问题刚刚在PowerQuery里回复过
https://www.bilibili.com/read/cv20064690
ExcelVBA第三季我证明了,PowerQuery可以在大多数案例中很简单的代替字典。
而且去重这件事情ExcelVBA也有相关方法可以代替字典
看完ExcelVBA第二三季,你会有不一样的认知
如果您想练习字典的写法,可以参考下面一位ExcelHome版主的写法
https://www.bilibili.com/video/BV1uY4y1q77n
我孙兴华是全网出了名的偷懒,还记得我经常说的一句话吗?
高手一小时写一个运行1秒中的代码,孙兴华3分钟写一个运行几分钟的代码。
(时间只是个比喻,我写代码重在快速解决问题,而不是研究代码运行速度,因为工作性质不同,我是给自己用,不是卖软件,我解决问题大多是从自己笔记上直接复制粘贴后修改一下就搞定了,我每隔几年就花钱升级一次电脑,要的就是它处理数据的速度,如果都让我用大脑处理,我升级电脑做什么?)
以下步骤每一步都是在上一步的基础上添加代码:
第一步:筛选

筛选第3列大于0的
运行后返回:

我们将这个结果复制到一个新工作表中
第二步:判断工作表是否存在不存在就创建,并复制
ExcelVBA第二季第9课

我们需要复制到一个新的工作表中,比如这个工作表名叫孙兴华,那么我们需要判断一下,如果孙兴华这张工作表不存在,我们就创建,否则就不创建
ExcelVBA第三季第6课学习的判断工作表是否存在

ExcelVBA第二季第4课学的创建工作表

于是我们可以写成:
返回结果:

第三步:去重(避开字典嵌套)
我知道字典嵌套可以实现,但是那写起来麻烦,我讲起来也不容易,我ExcelVBA第三季讲了删除重复,ExcelVBA第17回,这个功能可以在这里代替字典嵌套

于是我们写成:
返回:

现在你用数据透视表就可以搞定了

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

先呼叫透视表,做出结果复制,选择粘贴到sheet1,删除孙兴华那张表
所使用的代码在我课程中均有出处,以下是完整代码,运行Sub shishi()这个过程
返回结果:


本文章配套课件已经发到评论区了

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