龙空技术网

神奇的字典,VBA代码实现指定条件数据汇总

VBA语言専攻 518

前言:

眼前各位老铁们对“vba条件”大概比较重视,同学们都想要分析一些“vba条件”的相关资讯。那么小编也在网络上汇集了一些关于“vba条件””的相关文章,希望兄弟们能喜欢,同学们一起来学习一下吧!

人生的每一段路上,需要成功的自信;也需要失败的警醒。每一段经历都要珍贵,生活的美好缘于一颗平常心。不必雕琢,踏踏实实做事,简简单单做人。不管现实有多残忍,我们都要固执地相信,只要顽强的前行,一切阴霾都会吹散在风中。坚持,阳光一定就在不远处!静下心,多学习有用的知识,为后疫情时代做知识的储备。后疫情时代将演绎一场战胜萧条的战役。疫情终将会过去,曙光一定会到来。做了什么,就会收获什么。后疫情时代将会是一个全新的世界,很多理念都将被打破,我们每个人,要尽可能多的学习有用的知识,为自己充电。在今后更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。为后疫情时代做的必要准备。

什么是存量残杀?简单而言,在取代OFFICE新的办公软件没有到来之前,谁能把应用做到最为先进,谁就是王者。其中登峰至极的技能非VBA莫属!

今日继续和大家分享VBA编程中常用的常用"积木"过程代码。这些内容大多是我的经验的记录,来源于我多年的经验。最近代码多是出自"VBA数组与字典解决方案"教程,有一些朋友反映分享的内容不能很好的理解,可以参考这套资料的内容进行研读。今日分享的是第263期。

VBA过程代码263:应用数组与字典,实现单个条件汇总求和

Sub MyNZ ()

Dim myarr

'将数据放入数组中

Sheets("38").Select

myarr = Range("a2:b" & Range("b2").End(xlDown).row)

'定义字典

Set myDic = CreateObject("Scripting.Dictionary")

'给字典赋值

For i = 1 To UBound(myarr, 1)

If Not myDic.exists(myarr(i, 1)) Then

'没有找到键,那么就赋值

myDic(myarr(i, 1)) = myarr(i, 2)

Else

'找到,值增加

myDic(myarr(i, 1)) = myDic(myarr(i, 1)) + myarr(i, 2)

End If

Next

Range("g:h").ClearContents

Range("g1:h1") = Array("型号", "数量")

'将键和键值赋给数组,并通过装置函数显示在工作表中

myarr = Array(myDic.Keys, myDic.items)

Range("g2").Resize(myDic.Count, 2) = Application.Transpose(myarr)

End Sub

代码解析: 上述代码实现了按A列的值,把B列数据汇总的功能。myarr = Range("a2:b" & Range("b2").End(xlDown).row)将数据放到数组中,注意这里的myarr 是个二维数组。首先查找,根据查找的结果做后续处理的方式。查找到了汇总求和,没有找到就新增条目。

最后将数组放到工作表中。注意要首先将工作表的区域扩展到和数组一般的大小。

VBA是利用Office实现自己小型办公自动化的有效手段.我根据自己20多年的VBA实际利用经验,现在推出了四部VBA经验学习资料,也是我"积木编程"思想的具体体现。

一:VBA代码解决方案,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点;

二:VBA数据库解决方案,是数据处理的专业利器,介绍利用ADO连接ACCDB,EXCEL。

三:VBA数组与字典解决方案,讲解VBA中的数组和字典的利用。

四:VBA代码解决方案之视频,是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。

目前正在写第五部教程:VBA中类的解读和利用,希望在年内能陆续在各个平台和大家见面,前些时在平台上发表了一事件响应的视频录屏,反响还是不错的,这个视频就是类的应用经典。

利用VBA进行数据统计真的非常实用,希望大家掌握这个工具,利用这个工具,让自己轻松,高效,快乐的工作。学习有用的知识,让健康的知识服务于大众,不劳而获,偷奸取巧,是不能获得有用的知识的,只有踏踏实实,沉下心,点滴起步,为后疫情时代做好知识的储备。我的目的是授人以渔,给大家提供我现成的经验,你可以借鉴到现成的经验,不偷着乐还更待何时?

标签: #vba条件