VBA中的字典二,字典的应用之去重,统计和求和

VBA中的字典二,字典的应用之去重,统计和求和这是关于字典的第二篇文章 聊聊字典的应用之去重 统计和求和 If Not d Exists Then 如果字典 d 中 mingzi 不存在的话 然后就 add 对应的 mingzi

欢迎大家来到IT世界,在知识的湖畔探索吧!

这是关于字典的第二篇文章,聊聊字典的应用之去重,统计和求和

我们这边说的去重,也就是平常所说的求不重复值的问题。

如下图所示,这是一份成绩单。

姓名

科目

成绩

张三

语文

90

张三

数学

96

张三

英语

92

李四

语文

93

李四

数学

94

李四

英语

100

李四

科学

99

王五

语文

96

王五

数学

97

王五

英语

100

孙七

语文

99

孙七

数学

89

孙七

英语

90

孙七

科学

95

首先,第一个问题,我们要统计共有几个人。也就是我们所说的去重。

代码如下:

Dim d As Object Dim i As Long Dim mingzi As String Set d = CreateObject("Scripting.Dictionary") For i = 2 To [a65536].End(xlUp).Row mingzi = Cells(i, 1) If Not d.Exists(mingzi) Then d.Add mingzi, "" End If Next i MsgBox d.Count

欢迎大家来到IT世界,在知识的湖畔探索吧!

对以上代码简单地说明一下。

  • If Not d.Exists(mingzi) Then 如果字典d 中 mingzi 不存在的话,然后就add 对应的mingzi。
  • d.Count 即统计字典中名字的个数。

第二个问题,李四参加了几个科目的考试?这也是我们所说的计数。

代码其实非常简单,首先我们要判断,如果字典d中存在了这个mingzi,那我们在item中对这个mingzi的item值进行累加1即可。

代码稍加修改即可:

欢迎大家来到IT世界,在知识的湖畔探索吧!Dim d As Object Dim i As Long Dim mingzi As String Set d = CreateObject("Scripting.Dictionary") For i = 2 To [a65536].End(xlUp).Row mingzi = Cells(i, 1) If Not d.Exists(mingzi) Then d.Add mingzi, 1 Else d(mingzi) = d(mingzi) + 1 End If Next i MsgBox d("张三") MsgBox d("李四")

d(mingzi) = d(mingzi) + 1 实际上就是对Key键对应的Item值进行累加。

接下来第三个问题,求每个人的总分。也就是我们所要说的求和。

其实求和与统计的方法是一样的,只是item赋的值不一样罢了。

代码仍然稍加修改:

Dim d As Object Dim i As Long Dim mingzi As String Dim chenji As Integer Set d = CreateObject("Scripting.Dictionary") For i = 2 To [a65536].End(xlUp).Row mingzi = Cells(i, 1) chengji = Cells(i, 3) If Not d.Exists(mingzi) Then d.Add mingzi, chengji Else d(mingzi) = d(mingzi) + chengji End If Next i MsgBox d("张三") MsgBox d("李四")

我们通过字典的Exists方法,便实现了数据的简单去重,统计和求和的功能。

通过上面的代码,我们能非常清晰地理解各句代码的含义。

但实际上,我们仍可以把代码简化一下,提高代码的运行效率。

欢迎大家来到IT世界,在知识的湖畔探索吧!Dim d As Object Dim i As Long Dim mingzi As String Dim chenji As Integer Set d = CreateObject("Scripting.Dictionary") For i = 2 To [a65536].End(xlUp).Row mingzi = Cells(i, 1) chengji = Cells(i, 3) d(mingzi) = d(mingzi) + chengji Next i MsgBox d("张三") MsgBox d("李四")

文中代码都是比较简单的应用,后续我们再举较多的例子来讨论字典更多的好的应用。

我始终觉得,字典这个工具,实际应用中,可以做很多的工作,并且相对于数组来说,更好理解。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/99217.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信