首页
学习
活动
专区
工具
TVP
发布

VBA字典(Dictionary)极简教程

标签:VBA,Dictionary Excel中的字典(Dictionary)对大多数人来说都是个谜,即使是有些很熟悉VBA的人,可能对其都还不了解。...其实,字典是一个很好的工具,运行快速,可以执行一些很好的计算。 字典的工作原理与普通字典相同,一个单词不会以相同的拼写输入两次。在字典中,键(key)是唯一的标识符,用于标记字典中的条目。...放入数据到字典 以下是将项目放入字典的方法。基本字典条目分为两部分: 键(Key)——为Dictionary对象中的现有键值设置新键值。...图1 引用“Microsoft Scripting Runtime”库 要充分利用字典,最好在VBA的“引用”菜单中添加对“Microsoft Scripting Runtime”的引用。...图3 这是对Excel中字典的基本介绍,没有涉及到其全部强大的功能,但它确实是VBA内部一个令人惊叹且值得研究的工具。 注:本文学习整理自thesmallman.com,供有兴趣的朋友参考。

2.3K30

VBA字典(详解,示例)「建议收藏」

文章目录 创建字典对象 字典的属性|方法 案例 去重 求和 计数 匹配 key的组合和分割 字典value多字段累加 字典求和和计数同时进行 类似sql的join操作 创建字典对象 '后期绑定:方便代码在其他电脑上运行...:dic.remove key 删除字典对象:set dic = Nothing with activesheet 'dic.count:字典计数,字典中一共有多少条记录; 'dic.keys:字典的键..."字符串‘内容’存在于字典的键中" '清空字典,有时候其他过程也需要使用字典,当前过程已经使用完了,但我们又不想重新创建字典对象,这时候我们可以public字典全局变量,再清空字典,供新的过程使用该字典对象...,重复导入字典只会存在一个,可以利用字典这点特性去重。...Then arr(i, 3) = "类型2" '将类型1合并为类型2 If d.exists(arr(i, 1) & "|" & arr(i, 3)) Then ' vba

2.2K31
您找到你想要的搜索结果了吗?
是的
没有找到

VBA: 字典(Dictionary)的基本概念

文章背景: 在VBA中,有这么一个对象:字典(Dictionary),它像我们用过的纸质字典一样,用键值对(key:item)来表示。...键可以理解为新华字典检字表中的关键字,而值可以理解为对关键字的解释。字典在数据的去重上很有用。 在VBA字典中,有4个属性和6种方法,相比其它的对象要简洁得多,而且容易理解。...1 字典的属性1.1 Count2.2 Key2.3 Item2.4 CompareMode2 字典的方法2.1 Add 2.2 Keys2.3 Items2.4 Exists2.5 Remove2.6...字典(dictionary)(https://blog.csdn.net/Gordennizaicunzai/article/details/73730221) [2] 数据处理VBA篇:字典基础概念...https://www.jianshu.com/p/d36a0b907883) [3] Dictionary object(https://learn.microsoft.com/en-us/office/vba

55920

VBA调用外部对象01:字典Dictionary

如果你还有兴趣深入了解,那就需要去学习数据结构和算法方面的东西了,字典就是一种Hash算法实现的东西。...1、COM对象 字典就是Windows系统做好了的一个东西,是一种叫做COM对象的东西,在VBA中如果要使用的话,有2种方法: 前期绑定: 在VBA编辑器里点击工具-引用,找到需要使用的项目勾选...后期绑定: 使用VBA的CreateObject函数,这种情况下要知道COM对象的名称。...VBA.CreateObject("XXXXX") 这样就可以在VBA里使用该对象了,2种方法有一点小的差异,主要是: 前期绑定的方法使用对象时就像是使用VBA内部对象一样了,但是一旦你把做好的程序发给别人使用...作为VBA的使用者,知道这样使用COM就可以了。

3.2K40

字典的创建必须使用dict()函数(vba dictionary 嵌套)

巧用枚举类型来管理数据字典 文章目录 巧用枚举类型来管理数据字典 背景 数据结构表 使用枚举来管理数据字典 枚举的增强使用(枚举里加方法) 枚举的优化策略 第一步优化 : 枚举继承接口 第二步优化 :...增加 Bean 存枚举值, 使用享元模式存储 Bean 示例 使用枚举管理数据字典的好处 git repo 背景 开发 Java 项目时, 数据字典的管理是个令人头痛的问题, 至少对我而言是这样的, 我所在的上一家公司项目里面对于字典表的管理是可以进行配置的..., 他们是将字典表统一存放在一个数据库里面进行配置, 然后可以由管理员进行动态的实现字典表的变更....数据结构表 先来两个数据表(简单一点, 一些非空, 长度什么的就不写了), 两个表都有 gender 和 state , gender 字典项相同, 但 state 字典项不同 学生表 Student...状态 : {未报到, 在读, 毕业, 结业, 肄业, 退学, 开除} 教师表 Teacher 字段名(field) 类型 字典项 teaNo INTEGER name

2.4K20

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

excelperfect 下面列举字典对象的一些操作示例和技巧,进一步理解字典的应用。...示例1:在一个键中存储多个值 在前面的讲解中,我们添加到字典中的元素都是一个键对应着一个值,如果我们想要在字典对应的每个键中存储多个值,该怎样做呢?...如下图1所示,我们想要在不同的字典键中分别存储图示工作表每行数据。 ?...Dim dict As Object Dim oStud As clsStudent Dim lngLastRow As Long Dim i As Long '创建字典对象...图2 示例2:获取唯一值 可以利用字典键唯一这个特性,来获取列表唯一值。例如下图3所示的工作表,有多个重复数据,现在想要获取这些数据的不重复值。 ?

1.7K20

VBA调用外部对象01:字典Dictionary(去除重复数据)

前面我们简单介绍了字典的方法、属性,以及使用字典来快速判断数据是否存在。...如果你的数据是有重复的,前面那个例子里的代码将会出错: For i = 2 To rowA d.Add arrA(i, 1), i Next 字典的这种添加Key和Item的方式是不允许重复的...而导致的错误提示了,又因为Item是缺省属性,所以是可以省略的,简化后的代码就是: d(arrA(i, 1)) = i 这样就更方便了,如果你看了前面我提到的那个帖子“呼之即来,挥之即去”,应该已经知道了这种方法,VBA...中使用字典基本是不会明确调用Add方法的,一般情况都是用这种直接更新Item的方式。...去除重复: 我们知道了字典的这个特点,不允许重复的Key,那我们就可以使用它来完成一个经常会碰到的去除重复数据的功能了,我们只需要把数据全部添加到字典中,最后取出Keys就可以了,非常的简单: Sub

1.6K10

Excel VBA解读(158): 数据结构—认识字典对象

接下来的几篇文章,我们将详细讲解字典。 在VBA中,字典可以存储不同的数据类型,并且每个元素都有唯一的键,可以方便地访问字典元素,其包含的属性和方法,能够更方便地操作数据。...创建字典对象 在标准VBA库中不包含Dictionary对象,因此要创建并使用Dictionary对象,先要连接到Dictionary对象所在的库文件Microsoft Scripting Runtime...Set dict = CreateObject("Scripting.Dictionary") 字典对象的基本操作概览 声明字典对象变量后,我们来简要看看对字典对象的一些基本操作。...添加字典元素 使用Add方法来添加字典元素: dict.Add键, 值 注意,字典中应不存在要添加的值的键。 修改字典元素值 dict(键) = 值 将指定键的元素值修改为指定值。...获取字典元素值 值 = dict(键) 判断键是否存在 dict.Exists(键) 如果指定键存在,返回True,否则返回False。

2K20

Excel VBA解读(159): 数据结构—字典对象的基本操作

添加字典元素 使用Add方法,添加字典元素项。其语法为: 字典对象.Add Key, Item Add方法有两个参数。参数Key指定字典元素项的键值,参数Item指定字典元素项的值。...图1 给字典元素赋值 可以直接给指定键的字典元素赋值,其语法为: 字典对象(Key) = Item 例如,代码: dict(“完美Excel”)= “excelperfect” 注意,如果指定键的字典元素已存在...如果指定键的字典元素不存在,则会添加新字典元素。...图2 统计字典元素数 使用Count方法返回字典中元素的数量,其语法为: 字典对象.Count 例如,代码: Sub testCount() Dim dict As Object Set...图3 删除某字典元素项 使用Remove方法可以删除指定的字典元素项,其语法为: 字典对象.Remove Key 例如,代码: Sub testRemove() Dim dict As Object

1.7K21

Excel VBA解读(162): 一起看看数组、集合和字典

字典 字典可以用来存储不同的数据类型。 注意,在数组中,可以存储用户定义类型。然而,不能在字典或集合中存储用户定义类型。...2.可以修改字典元素的值。在给指定键的字典元素赋值时,如果指定键的字典元素已存在,则会修改该元素的值。如果指定键的字典元素不存在,则会添加新字典元素。...字典 字典中有唯一标识元素的键,我们只需要使用这个键来访问元素,而不需知道其具体的存放位置。...字典 有一系列数据,但是需要获取不重复元素值时,可以使用字典。...并且,由于Dictionary对象使用了散列表和一些先进的排序和索引算法,因此字典的运行速度也快于集合的速度。

4.1K10

VBA调用外部对象01:字典Dictionary(Key的数据类型)

难道字典中存在重复的Key了? 1、原因分析: ?...在前面我们讲过,用d.Add这种方法添加Key的时候,一旦有重复的Key,会出现上图中的错误,既然d.Add Cells(i, 1), i这个操作没有报错,那说明字典就是没有重复的Key,所以,我们应该去看看字典中真正存储的是什么...2、如何避免 出现这种情况主要是我们没有明确指定我们想要处理的数据的数据类型,在For语句里,我们提到过要养成好的习惯,要清楚自己正在操作的是什么数据类型,需不需进行转换,要转换的话别依赖VBA的自动处理...在我们上面要处理的例子里,显然我们希望的是把单元格里的内容,也就是字符串数据添加到字典中,所以我们应该显示的添加VBA.CStr: d.Add VBA.CStr(Cells(i, 1)), i 这样我们就算省略了缺省的...3、小结 通过对字典Key的添加,了解字典Key虽然什么数据类型都可以传递进去,但是作为使用者一定要清楚自己要添加的数据是什么数据类型,并显示的进行转换,避免不必要的错误。

2.3K20

VBA操作VBA——VBA工程对象

1、什么是VBA操作VBA: 前面的VBA意思是指VBA程序,后面的VBA是指VBA工程对象(代码和组织代码的模块、类等)。 也就是一段运行过程中的VBA程序,可以去操作VBA工程对象。...能被操作的东西显然就是一种对象,首先如果要使用VBA去操作VBA工程对象,先按如下设置: ? 勾选信任对VBA工程对象模型的访问,这时候就可以去使用VBA工程对象了。...2、VBA工程对象: 在F2对象浏览器中查看VBAProject: ? 每一个打开的Excel工作簿文件都有一个VBAProject,不管是有没有代码的。...在使用VBA编辑器的时候,有一个叫做工程资源管理器的窗口: ?...3、输出VBA工程对象名称: 简单使用一下这个VBA工程对象,和其他VBA库对象用法都差不多,要输出打开的这些VBA工程名称,非常简单,只要循环然后输出它的Name属性: Sub TestVBProject

3.3K20
领券