首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从嵌套字典返回关键字excel vba

在Excel VBA中,嵌套字典是一种数据结构,它允许我们在一个字典中存储另一个字典。通过使用嵌套字典,我们可以创建更复杂的数据结构,以便更好地组织和管理数据。

在Excel VBA中,可以使用以下代码从嵌套字典中返回关键字:

代码语言:vba
复制
Function GetValueFromNestedDict(nestedDict As Object, key As Variant) As Variant
    Dim outerKey As Variant
    Dim innerKey As Variant
    
    For Each outerKey In nestedDict.Keys
        If TypeName(nestedDict(outerKey)) = "Dictionary" Then
            For Each innerKey In nestedDict(outerKey).Keys
                If innerKey = key Then
                    GetValueFromNestedDict = nestedDict(outerKey)(innerKey)
                    Exit Function
                End If
            Next innerKey
        End If
    Next outerKey
    
    GetValueFromNestedDict = "Key not found"
End Function

这个函数接受两个参数:nestedDict表示嵌套字典,key表示要查找的关键字。它会遍历嵌套字典中的所有层级,直到找到匹配的关键字。如果找到了匹配的关键字,则返回对应的值;如果没有找到匹配的关键字,则返回"Key not found"。

使用示例:

代码语言:vba
复制
Sub Test()
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 创建嵌套字典
    Dim innerDict As Object
    Set innerDict = CreateObject("Scripting.Dictionary")
    innerDict.Add "key1", "value1"
    innerDict.Add "key2", "value2"
    
    dict.Add "outerKey", innerDict
    
    ' 调用函数获取值
    Dim value As Variant
    value = GetValueFromNestedDict(dict, "key2")
    
    MsgBox value ' 输出"value2"
End Sub

在这个示例中,我们创建了一个嵌套字典,其中包含一个内部字典。然后,我们调用GetValueFromNestedDict函数来获取内部字典中关键字为"key2"的值,并将其显示在消息框中。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

2.5K20

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.8K20

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

学习Excel技术,关注微信公众号: excelperfect 在前面的一系列文章中,我们详细讲解了集合、数组和ArrayList,我们通常可以使用它们来存储成组的数据,方便后面的操作。...接下来的几篇文章,我们将详细讲解字典。 在VBA中,字典可以存储不同的数据类型,并且每个元素都有唯一的键,可以方便地访问字典元素,其包含的属性和方法,能够更方便地操作数据。...创建字典对象 在标准VBA库中不包含Dictionary对象,因此要创建并使用Dictionary对象,先要连接到Dictionary对象所在的库文件Microsoft Scripting Runtime...添加字典元素 使用Add方法来添加字典元素: dict.Add键, 值 注意,字典中应不存在要添加的值的键。 修改字典元素值 dict(键) = 值 将指定键的元素值修改为指定值。...获取字典元素值 值 = dict(键) 判断键是否存在 dict.Exists(键) 如果指定键存在,返回True,否则返回False。

2.1K20

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

添加字典元素 使用Add方法,添加字典元素项。其语法为: 字典对象.Add Key, Item Add方法有两个参数。参数Key指定字典元素项的键值,参数Item指定字典元素项的值。...dict.Add "2019-8-15", "考试" End Sub 代码中可以看出,参数Key可以指定任意数据类型的值,参数Item也可以指定任意数据类型的值,甚至可以是数组、集合或者字典。...图1 给字典元素赋值 可以直接给指定键的字典元素赋值,其语法为: 字典对象(Key) = Item 例如,代码: dict(“完美Excel”)= “excelperfect” 注意,如果指定键的字典元素已存在..., "考试" If dict.exists("完美Excel") Then MsgBox "完美Excel微信公众号: "& dict("完美Excel") Else...图2 统计字典元素数 使用Count方法返回字典中元素的数量,其语法为: 字典对象.Count 例如,代码: Sub testCount() Dim dict As Object Set

2K21

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

3.集合、字典都是对象,在返回整个对象时,应使用Set语句。 对元素的访问 数组、集合、字典的存储结构不同,决定了访问其元素的差异。 数组 每个元素放置在固定的位置,我们需要知道其索引,来访问它。...也可以使用键值: col.Item(sRangeName) 集合的索引值1开始。 字典 字典中有唯一标识元素的键,我们只需要使用这个键来访问元素,而不需知道其具体的存放位置。...下面的代码添加对象到字典中,其语法与添加元素项到集合中非常相似,只是键和元素参数的位置相反: Dim dict As Scripting.Dictionary Dim rng As Excel.Range...字典与集合 集合是一种很好的数据结构,在Excel对象模型中几乎所有的容器结构都是使用集合,例如:Workbooks、Worksheets等。 然而,字典有更多的内置方法,使得其使用比集合更方便。...特别是下列3个方法: 1.Exists方法:用来判断字典中是否存在指定的键。(如果要在集合中检查指定的键是否存在,则需要额外编写一段代码来完成) 2.Keys方法:返回一个数组,包含字典中所有的键。

4.3K10

EXCEL VBA开始,入门业务自动化编程

本期开始,打算穿插着写几个连载,最接近大家日常业务的Office开始。因为本身是在日企工作,所以对Excel有着特别的情感,索性就决定先从Excel开始吧。...使用Excel VBA进行编程,十有八九是用在工作上,为了提高工作效率用的。Excel本身其实也是一种办公工具。当然,也存在一些大神,能够用VBA做出赛车游戏或俄罗斯方块的。但毕竟是极少数的。...短评:「Visual Basic(VB.NET)和VBA以及宏的区别」 VBAExcel编程所用的语言,而VBE编程所用的开发环境。...VBA同Visual Basic(VB.NET)的区别是,VBA是运行在Excel,Word或Access等Office程序上的编程语言,它是VB基础上改良的,可以直接作为Excel,Word或Access...Excel支持在工作簿上创建一个图形来作为按钮,并把它分配给宏作为启动器的方式。在按钮上面可以直接写上宏的功能,实际使用起来是非常便利的。 首先,「插入」选项卡中选择「形状」的[]处。

17.5K111

VBA到Python,Excel工作效率如何提高?

5 具体操作 有两种主要的方法可以使我们 Excel 转换到 Python(以及转换回来)。第一种是直接 VBA 调用 Python 脚本,另一种是通过用户定义函数调用。...6 VBA到Python 在我们开始编码之前,让我们首先确保在同一个页面上。打开Excel VBA 编辑器,点击 Alt + F11。返回以下屏幕: ?...例1:在Excel外部操作,并返回输出。 在本例中,我们将看到如何在Excel之外执行操作,然后在电子表格中返回结果。...例2:Excel中读取,用Python对其进行处理,然后将结果传递回Excel。 更具体地说,我们将读取一个 Greeting,一个 Name 和一个我们可以找到jokes的文件位置。...然后,我们的 Python 脚本将从文件中随机抽取一行,并返回一个jokes。 首先,VBA代码。

11.3K20

Excel实战技巧:Excel预测的正态分布中返回随机数

Excel的两个随机数函数 Excel 提供了两个生成随机数的函数: RAND函数返回一个介于0和1之间的随机数。...如何正态分布中返回一个随机数?...因此,这是均值为95且标准差为12.5的正态分布中返回随机数的公式: =NORM.INV(RAND(), 95, 12.5) 现在让我们检查一下这个公式是否提供给了我们预期的结果。...用直方图检查结果 下面的两个图并不花哨,但它们讲述了在你创建Excel模型或预测时需要了解的事。 图4计算了上一个公式如何成功地正态分布返回数字。...该图表很容易证明我们已经通过组合NORM.INV函数和RAND函数完成了我们想要的:我们现在有一种方法可以正态分布中返回随机数。

1.9K10

为什么python比vba更适合自动化处理Excel数据?

"我工作环境不能安装,因此vba就比python更适合处理Excel" "vba比python快速100倍!" 其实,那些稍微接触过 pandas 的人,相信都会心底上抗拒使用vba。...---- vba 使用数组+字典,就是高效率? 大部分不经思考,张口就反对 python 的同学,都是对自己的 vba "数组+字典" 的技能有着迷之自信。...来看一个数据分析相关的处理需求: 我们注意到,有些人是亲朋好友一起上船,比如: "票根号"一样,可以看出来他们是一起上船 "住址"一样,可以看出来他们是一家四口 我们需要统计出有多少组这些2人或以上登船的...按理说,sql 应该是更好的选择,但实际上很多复杂需求实现,sql 需要大量的嵌套查询,此时就一点都不简洁了。以后再举例说明 ---- 现实的需求是 "操作Excel" + "数据处理" ,怎么办?...比如分组的原理就类似 vba 中使用字典,这是相对固定的,完全可以让库完成。 但是分组后,每一组的处理逻辑却是变化的,由使用者临时决定,比如之前的需求分组中我们有时候需要计数,有时候需要筛选。

3.6K30

VBA拆分表格

因为例子里只有5个年龄段,所以你完全可以筛选复制5次就搞定了,不过,如果后面又有变化,比如需要根据职务或者其他情况来拆分,那你又得手动去处理了,让我们看看用VBA代码如何来完成这个工作,一旦情况变化,你只要重新运行一次程序就可以...要获取不重复的项目,字典自然是最好的选择,我们使用字典对象来记录每一个关键字对应的所有单元格,最后将字典记录下来的单元格复制到新表即可: ?...(d.Src(i, Pos.KeyCol)) If dic.Exists(strkey) Then '再次出现的关键字,合并 Set dic...(strkey) = Excel.Union(Cells(i, 1).Resize(1, Pos.Cols), dic(strkey)) Else '第一次出现的关键字...,记录标题及当前行单元格 Set dic(strkey) = Excel.Union(Cells(1, 1).Resize(1, Pos.Cols), Cells(i, 1).Resize

1.4K20

个人永久性免费-Excel催化剂功能第29波-追加中国特色的中文相关自定义函数

为何使用自定义函数的方式提供带来最佳效果 Excel本身提供了几百个函数,函数间还可以作嵌套,带来无穷无尽的功能实现,为何Excel原生提供的是函数的方式而不是菜单的方式实现呢?...而函数,只需输入函数的关键字,自动补全,找寻的速度极快。...输入一个函数,返回多个单元格的数组函数结果,无需繁杂的数组公式输入方式,目前只有Excel催化剂一家提供如此优异的使用体验! ? ?...繁体转简体 补充自定义函数 顺带补充几个访问Excel对象的一些属性的函数,在VBA里很轻松拿到的信息,可能对操作界面的来说,想要时,却没法即刻拥有,也是比较揪心。...,重新定义Excel函数的学习和使用方法 第5波-使用DAX查询PowerbiDeskTop中获取数据源 第6波-导出PowerbiDesktop模型数据字典 第7波-智能选区功能 第8波-快速可视化数据

93610

VBA与数据库——获取第一条查找记录

如果数据源里存在重复的时候,结果将会是这样的: 这个和使用Excel的习惯是不一致的,一般在Excel里使用VLookup查找的话,取的会是第一条满足条件的数据;如果是使用VBA字典的方式,获取的是最后放入字典的数据...语句先对数据源做一下处理,先把重复的情况去除掉,再使用原来的sql语句进行查找: Sub ADOSearchFirst() Dim AdoConn As Object Set AdoConn = VBA.CreateObject..."Provider =Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.fullname & ";Extended Properties=""Excel...这里主要用到group by分组,获取First第一个出现的数据,将这条语句放在括号里,相当于括号里的就是一张新的表格,有点类似Excel里公式的嵌套使用。

1.8K20

Excel催化剂开源第39波-json字符串解释的超能类库

对一般VBA开发群体来说,处理json、xml结构的数据源,在VB6的世界里,是一件非常不容易的事情,隐约记得当年自己哪里找到了一个使用字典实现的json解释的函数,实在非常稀有。...在.Net的世界里,这些却变得如此简单,易用,本篇对普通.Net开发来说,可能是很陈旧的老知识点,希望对VBA开发者能有一点启发。...在nuget上下载量过亿,不用关键字搜索都排到最前面 因为Excel催化剂绝大部分使用场景为数据采集工作,对采集到的json的数据进行数据转换,变为结构化的可供数据库和Excel用户使用的标准数据表结构...序列化过程也是一两句代码的事情 当然还有一些小细节微调,如对原本返回的日期格式不满意,可以用以下代码去控制它。...str = JsonConvert.SerializeObject(result, Formatting.Indented,timeConverter); 同样地如果json字符串要求序列化的结果为C#关键字

1.3K10

Excel公式技巧20: 列表中返回满足多个条件的数据

在实际工作中,我们经常需要从某列返回数据,该数据对应于另一列满足一个或多个条件的数据中的最大值。 如下图1所示,需要返回指定序号(列A)的最新版本(列B)对应的日期(列C)。 ?...千万不能忽略了这一要点,即如果采用以下简单方法: =INDEX(C2:C10,MATCH(MAX(IF(A2:A10=F1,B2:B10)),B2:B10,0)) 尽管此公式构造仍可以返回正确的值,但完全不能保证所有情况下都正确...而且,如果该情况发生在希望返回的值之前行中,则MATCH函数显然不会返回我们想要的值。...由于数组中的最小值为0.2,在数组中的第7个位置,因此上述公式构造的结果为: {0;0;0;0;0;0;1;0;0;0} 获得此数组后,我们只需要从列C中与该数组出现的非零条目(即1)相对应的位置返回数据即可

8.6K10

VBA循环结构没过瘾,那就再来一篇

image.png 这是免费教程《Excel VBA:办公自动化》的第10节,介绍while循环结构。 1.认识VBA:什么是VBA?...2.这些掌握了,你才敢说自己懂VBA 3.VBA变量5年踩坑吐血精华总结 4.VBA中重要的强制申明,谁看谁明白 5.VBA掌握循环结构,包你效率提高500倍 6.精通VBA分支结构,少写程序100行...用法1是由关键字「WHILE」和「WEND」组成,而用法2由关键字「DO WHILE」和「LOOP」组成,二者表达意思一样。由于2的用法更加丰富和灵活,因此我们见到它的频率也更高些。...由于既涉及到循环,又涉及到判断,所以这种业务需求要使用「嵌套结构」。...image.png 推荐:如何用Excel进行数据分析? image.png

1.5K00
领券