前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel VBA解读(161): 数据结构—字典对象操作示例

Excel VBA解读(161): 数据结构—字典对象操作示例

作者头像
fanjy
发布2019-09-03 18:17:58
1.8K0
发布2019-09-03 18:17:58
举报
文章被收录于专栏:完美Excel完美Excel

excelperfect

下面列举字典对象的一些操作示例和技巧,进一步理解字典的应用。

示例1:在一个键中存储多个值

在前面的讲解中,我们添加到字典中的元素都是一个键对应着一个值,如果我们想要在字典对应的每个键中存储多个值,该怎样做呢?

经过前面一系列数据结构文章的学习,大家一定会想到使用数组或者集合作为值。但是,还有更好的办法,就是使用类模块。

如下图1所示,我们想要在不同的字典键中分别存储图示工作表每行数据。

图1

首先,在VBE编辑器中插入一个类模块,将其重命名为clsStudent,输入代码:

Public StudentID As String

Public strName As String

Public lngScore As Long

分别代表图1工作表中的编号、姓名和分数。

然后,插入一个标准模块,输入代码:

Sub AddMultiValue()

Dim dict As Object

Dim oStud As clsStudent

Dim lngLastRow As Long

Dim i As Long

'创建字典对象

Set dict = CreateObject("Scripting.Dictionary")

'工作表Sheet1中最后一行

lngLastRow =Worksheets("Sheet1").Range("A" &Rows.Count).End(xlUp).Row

'遍历工作表数据

'将数据存储到字典中

For i = 2 To lngLastRow

Set oStud = New clsStudent

oStud.StudentID =Worksheets("Sheet1").Cells(i, 1).Value

oStud.strName =Worksheets("Sheet1").Cells(i, 2).Value

oStud.lngScore =Worksheets("Sheet1").Cells(i, 3).Value

dict.Add oStud.StudentID, oStud

Next i

'遍历字典并打印值

Dim k As Variant

For Each k In dict.keys

Debug.Print dict(k).StudentID, _

dict(k).strName, _

dict(k).lngScore

Next k

End Sub

运行代码后的结果如下图2所示。

图2

示例2:获取唯一值

可以利用字典键唯一这个特性,来获取列表唯一值。例如下图3所示的工作表,有多个重复数据,现在想要获取这些数据的不重复值。

图3

编写代码如下:

Sub GetUniqueValue()

Dim dict As Object

Dim wks As Worksheet

Dim lngLastRow As Long

Dim i As Long

'创建字典对象

Set dict = CreateObject("Scripting.Dictionary")

'设置工作表对象

Set wks = Worksheets("Sheet2")

'工作表最后一行

lngLastRow = wks.Range("A" & Rows.Count).End(xlUp).Row

'错误处理

On Error Resume Next

'遍历工作表并在字典中添加数据

For i = 1 To lngLastRow

dict.Add wks.Cells(i, 1).Value, _

wks.Cells(i, 1).Value

Next i

'遍历字典键并打印

Dim k As Variant

For Each k In dict.keys

Debug.Print k

Next k

End Sub

运行后的结果如下图4所示。

图4

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档