【原创】VBA学习笔记(313)VBA字典相关:遍历字典,用key查item, 用item查key的方法

article/2025/9/27 14:35:33

 

1 字典的遍历方法

  • 即使是后期绑定,也可以用 
  • for each i in dict1.keys()   '这里用到的 dict1.keys()   但不是 dict1.keys(i) 是可以的
Sub test_dict11()Dim dict1 As Object
Set dict1 = CreateObject("scripting.dictionary")dict1.Add 1, "h"
dict1.Add 2, "e"
dict1.Add 3, "l"
dict1.Add 4, "l"
dict1.Add 5, "o"
dict1.Add 6, "world"For Each I In dict1.keys()Debug.Print I & "," & dict1(I)
Next
Debug.Print
'知道key 去查itemDebug.Print dict1(1)
Debug.Print dict1.Item(2)
Debug.PrintEnd Sub

 

2 用key查item,常规操作

  • dict1(key)
  • dict1.items(key)

 

3 用item查key 非常规操作

3.1 我自己的思路:dict1.keys() 和 dict1.items() 是一对对对应的

  • 利用key,item是成对出现的 字典设计
  • 如果item不重复的话,那么item的index就是key的index,index是同步的
  • 即使item重复,也可以循环筛出多个index
  • 但是要注意,这个方法必须前期绑定才生效。因为只有前期绑定,才支持 dict1.keys(i) 这种循环

 

  • 不减1就出错,因为match函数的问题,是工作表函数
  • 这样用match查找,还是需要前期绑定的支持,因为 dict1.keys(index) 直接用必须前期绑定
Sub test_dict1()Dim dict1 As New Dictionarydict1.Add 1, "h"
dict1.Add 2, "e"
dict1.Add 3, "l"
dict1.Add 4, "l"
dict1.Add 5, "o"
dict1.Add 6, "world"'方法1
'下面的反查方法要生效,必须是前期绑定!!!
'知道item去查key
'利用key,item 应该是成对的,也就是分别在 keys() items()的index是一样的。
For J = LBound(dict1.Items()) To UBound(dict1.Items())If dict1.Items(J) = "world" Then
'     If dict1(J) = "h" ThenDebug.Print J             'keys(),items()数组没定义,index是从0开始的Debug.Print dict1.Keys(J)End IfNext
Debug.Print'方法2,也只有前期绑定支持
'不减1就出错,因为match函数的问题,是工作表函数
'这样用match查找,还是需要前期绑定的支持,因为 dict1.keys(index) 直接用必须前期绑定
Debug.Print dict1.Keys(Application.Match("world", dict1.Items(), 0) - 1)End Sub

 

 

4 方法2,后期绑定也生效

  • 后期绑定也可以查
  • 如果是后期绑定
  • 不能直接用 dict.keys() dict.items()
  • 但可以用个数组中转绕一下即可
arr1=dict.keys()
arr1(index)
arr2=dict.items()
arr2(index)

 

Sub test_dict22()
'后期绑定各种测试Dim dict1 As Object
Set dict1 = CreateObject("scripting.dictionary")dict1.Add 1, "h"
dict1.Add 2, "e"
dict1.Add 3, "l"
dict1.Add 4, "l"
dict1.Add 5, "o"
dict1.Add 6, "world"'后期绑定,为什么又可以使用dict1.keys()? for each可以使用? 不能用index方式使用这2个数组?
For Each I In dict1.Keys()Debug.Print I & " ";Debug.Print dict1(I)
Next
Debug.Print'数组中转
'dict1.keys()  dict1.items() 都可以使用,但不能做index for i 的这种遍历,中转的数组可以
'dict1里 key-item同步,只要item不重复,可以用相同的变量循环arr1 = dict1.Keys()
arr2 = dict1.Items()
For I = LBound(arr2) To UBound(arr2)If arr2(I) = "world" ThenDebug.Print arr1(I) & "," & arr2(I)End If
Next
Debug.Print
End Sub

 


 


http://chatgpt.dhexx.cn/article/KVVMmO6K.shtml

相关文章

【Excel VBA和Python对照学习】创建字典

Excel VBA和Python双语对照学习 我们从小学习语文,都用过字典。查字典时可以从第一页开始,一页一页地往下找,直到找到为止。这样做明显效率低下,特别是字的位置比较靠后的时候。所以查字典时不这样做,而是根据目录直接…

vba中字典的用法

字典对象的方法有6个: Add 添加一条关键字与条目 Keys 返回所有关键字(形成1维数组) Items 返回所有条目(形成1维数组) Exists 关键字是否存在(TRUE/FALSE) Remove 移除关键字与对应的条目 RemoveAll 移除所有关键字与对应的条 注意: 字典对象的属性有4…

Excel VBA Dictionary excel vba 字典大全

Excel VBA Dictionary - A Complete Guide - Excel Macro Mastery A Quick Guide to the VBA Dictionary FunctionParamsEarly binding reference“Microsoft Scripting Runtime” (Add using Tools->References from the VB menu)Declare (early binding)Dim dict As Scr…

vba字典学习案例

一、案例概述: 本次案例主要讲解字典的学习和应用,通过使用字典的方式来将每一行不重复的数值进行汇总形成一个字符串,且将该字符串展示到指定单元格中。二、案例展示: (1)源数据: (…

VBA字典(dictionary)

这是我看到的最简单明了的Excel VBA字典(dictionary)的教程,把字典的应用,用短短几百字,全部道尽,简!但精彩!原文如下: 当年我(原作者:彭希仁)向LDY版主求教字典的时候,他…

在Excel VBA中使用字典

序言 VBA的基础数据类型里面并没有字典类型,但字典其实在很多应用场景中都很有用,那么如何在VBA中使用字典,本文就用几个例子和大家交流探讨一下。 场景1 某个医院每天都会从不同的制造商那里进三种材料中的一种,每天的进价都有…

VBA -[知识点]: 字典

VBA字典 记录一次VBA字典的使用部分代码 1. VBA 中创建一个字典对象2. 字典对象添加key 和 value3. 获取字典对象的key list4. 判断是否存在某个key5. 修改字典值6. 修改字典key 名称6. 删除某个item7. 删除所有item 记录一次VBA字典的使用 部分代码 Public Sub MainRun()1. …

VBA字典(详解,示例)

文章目录 创建字典对象字典的属性|方法案例去重求和计数匹配key的组合和分割字典value多字段累加字典求和和计数同时进行类似sql的join操作 创建字典对象 后期绑定:方便代码在其他电脑上运行,推荐。 dim dic as object Set dic CreateObject("scr…

JavaScript 动态生成表格

要求&#xff1a; HTML标签只写一行表头通过JS来写动态的表格&#xff08;有多少组数据&#xff0c;就自动创建多少行表格&#xff09;为学习和演示&#xff0c;采用固定的数据&#xff0c;不涉及调用后台数据 实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html…

利用JS代码完成动态生成表格案例及解析

思路&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&…

js自动生成html报表,JavaScript实现动态生成表格

本文实例为大家分享了JavaScript实现动态生成表格的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 功能描述 在输入框中输入行和列&#xff0c;点击按钮&#xff0c;生成拥有对应行和列的表格。如下图所示&#xff1a; 分析 HTML界面设计 行&#xff1a; 列&#xf…

JavaScript 动态生成表格 及删除表格

创建 表格表头 <body> <table> <thead> <tr> <td>序号</td> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>地址</td> <td>删除</td> </tr> </thead> <t…

js动态生成表格实例

效果图 代码 <!DOCTYPE html> <html> <body> <div><h1>动态生成表格</h1><div id"table1">行&#xff1a;<input type"text" id"h"/>列&#xff1a;<input type"text" id"…

在html中生成动态表格数据,JavaScript实现网页动态生成表格

JavaScript(JS)网页–动态生成表格,供大家参考,具体内容如下 在网页中,动态生成列表的内容,将数组中的object加入到列表中(没学到数据库)。在HTML中创建thead,然后通过JavaScipt动态生成tbody。并且在每行最后申城一个单元格,加入删除操作,点击删除可以删除此行。动态生…

使用JS动态生成表格

代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title></title><script>var bgColor;var list [{ id: 1, country: 中国, capital: 北京,},{ id: 2, country: 美国, capital: 纽约,},{ id…

html动态生成表格源码,JavaScript动态生成表格的示例

要求&#xff1a; HTML标签只写一行表头 通过JS来写动态的表格(有多少组数据&#xff0c;就自动创建多少行表格) 为学习和演示&#xff0c;采用固定的数据&#xff0c;不涉及调用后台数据 代码实现&#xff1a; HTML内容&#xff1a; 姓名科目成绩操作 CSS内容&#xff1a; tab…

利用javascript动态生成表格及注释

记录学习第一天 &#xff1a;关于javascript如何动态的生成表格 css样式想节省时间就没写,所以只有基本样式。 html部分&#xff1a; 创建一个表格&#xff08;table&#xff09;的头部&#xff08;thead&#xff09;和数据&#xff08;tbody&#xff09;标签。 <table b…

JavaScript网页——动态生成表格

1.创建学生数据 分析&#xff1a;因为里面的学生数据都是动态的&#xff0c;我们需要js动态生成。这里我们模拟数据&#xff0c;自己定义好数据。数据我们采取对象形式存储。 var students [{name:吕小布,subject:JavaScript,score:100,},{name:张益达,subject:JavaScript,…

JavaScript 动态生成表格 案例

功能描述 在输入框中输入行和列&#xff0c;点击按钮&#xff0c;生成拥有对应行和列的表格。如下图所示&#xff1a; 分析 HTML界面设计 <body>行&#xff1a;<input type"text" id"row" /> 列&#xff1a; <input type"text"…

javascript动态生成表格 -- 案例

js动态生成表格 Draven 效果预览html部分css部分js部分 表格内容使用js生成 效果预览 html部分 <table border"1px" cellspacing"0" cellpadding"10"><thead><tr style"background-color: #999999; height: 60px">…