VBA字典高效数据处理技巧分享
创作时间:
作者:
@小白创作中心
VBA字典高效数据处理技巧分享
Sub DictionaryExample()
' 创建字典对象
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' 添加键值对
dict.Add "A", 100
dict.Add "B", 200
dict.Add "C", 300
' 检查键是否存在
If dict.Exists("B") Then
MsgBox "Key B exists. Value: " & dict("B")
End If
' 修改值
dict("B") = 250
' 删除键
dict.Remove "C"
' 遍历字典
Dim key As Variant
For Each key In dict.Keys
Debug.Print "Key: " & key & ", Value: " & dict(key)
Next
' 统计元素数量
MsgBox "Total items: " & dict.Count
' 清空字典
dict.RemoveAll
End Sub
Sub DictionaryAdvancedUsage()
' 创建字典对象
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' 数据去重示例
Dim arr As Variant
arr = Array("apple", "banana", "apple", "orange", "banana", "grape")
Dim i As Long
For i = LBound(arr) To UBound(arr)
dict(arr(i)) = 1 ' 任意值,关键是键的唯一性
Next
' 去重后的数组
Dim uniqueArr() As String
ReDim uniqueArr(dict.Count - 1)
i = 0
For Each key In dict.Keys
uniqueArr(i) = key
i = i + 1
Next
' 输出去重后的数组
For i = LBound(uniqueArr) To UBound(uniqueArr)
Debug.Print uniqueArr(i)
Next
' 数据查找示例
Dim searchKey As String
searchKey = "banana"
If dict.Exists(searchKey) Then
MsgBox "Found: " & searchKey
Else
MsgBox "Not found: " & searchKey
End If
' 字典排序示例
Dim sortedKeys() As Variant
sortedKeys = dict.Keys
Call QuickSort(sortedKeys, LBound(sortedKeys), UBound(sortedKeys))
' 输出排序后的键值对
For i = LBound(sortedKeys) To UBound(sortedKeys)
Debug.Print "Sorted Key: " & sortedKeys(i) & ", Value: " & dict(sortedKeys(i))
Next
' 多字典操作示例
Dim dict2 As Object
Set dict2 = CreateObject("Scripting.Dictionary")
dict2.Add "D", 400
dict2.Add "E", 500
' 合并字典
Dim combinedDict As Object
Set combinedDict = CreateObject("Scripting.Dictionary")
For Each key In dict.Keys
combinedDict.Add key, dict(key)
Next
For Each key In dict2.Keys
combinedDict.Add key, dict2(key)
Next
' 输出合并后的字典
For Each key In combinedDict.Keys
Debug.Print "Combined Key: " & key & ", Value: " & combinedDict(key)
Next
End Sub
' 快速排序算法用于排序数组
Sub QuickSort(arr() As Variant, first As Long, last As Long)
Dim pivot As Variant
Dim temp As Variant
Dim i As Long
Dim j As Long
If first < last Then
pivot = arr((first + last) \ 2)
i = first - 1
j = last + 1
Do
Do
i = i + 1
Loop While arr(i) < pivot
Do
j = j - 1
Loop While arr(j) > pivot
If i <= j Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Loop While i <= j
QuickSort arr, first, j
QuickSort arr, j + 1, last
End If
End Sub
热门推荐
原神5.0值得期待吗?是否能再次拾回信心?
还没买返乡车票的同学看过来!超全干货轻松“拿捏”小小火车票
鹅颈藤壶是什么动物 怎么吃有什么功效和作用
秋冬喝中药,这些食物别乱吃!
冬季养生:如何正确遵循中药忌口原则?
修水县“头雁班”:党建引领乡村振兴的生动实践
如何在处理家庭问题时维护良好的关系?这些关系如何对生活产生积极影响?
社区文明礼仪:如何优雅提醒邻居
世界无烟日 | 不吸烟、主动戒烟都是健康的生活方式
九寨沟发生7.0级地震!当灾难来临,该如何解决饮食安全问题?
衣服上的铁锈怎么洗
李大霄解读:重磅会议后的股市风向标
杨以宁医生:用中医综合疗法攻克面瘫难题
中医杨以宁:用传统智慧守护心理健康
夏日梅雨季节:蚊子咬伤了咋办?
冬季养生:白萝卜+中药的黄金搭配
冬日养生:白萝卜与滋补药材的禁忌
中药与白萝卜:养生还是踩雷?
耳鸣的自我疗法
扎克伯格偷袭马斯克一年后:推特杀手只想岁月静好
骨质疏松治疗迎来新突破:从创新药物到全程管理
冬季老年人养骨全攻略:从运动到饮食,科学预防骨折
叙事作品中的反派角色深度塑造与挖掘探究
精酿啤酒保鲜秘籍:你可能不知道的小妙招!
运动摄影指南:如何设置快门速度和其他关键参数
摄影基础:摄影中的曝光三要素是什么,怎么用好?
2024中小学课本电子新教材下载入口及三大主科改动详解
广安门医院失眠专家推荐:王志青主任医师
中医科学院发布失眠治疗新指南,提供多种有效治疗方案
达克宁PK金达克宁:谁是抗真菌王者?