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
热门推荐
带有东字的男孩名字
橙色尿液是怎么回事
10万适合存定期吗?10万存款怎么存划算?
焰色试验全面解读:揭秘烟花颜色背后的化学原理
警惕!打鼾不止会窒息,还可能导致痴呆!
贷款咨询:如何选择适合自己的贷款方案?
房屋租赁费发票开具指南:流程、所需材料及注意事项
湖南十大著名景点
俄罗斯企业组团来蓉“深度游”:成都是稳定发展、面向未来的城市
陶渊明《庚子岁五月中从都还阻风于规林·其一》原文赏析及翻译
马斯克非真“BOSS” 政府效率部换将藏玄机? 特朗普又出手了
板蓝根的功效作用功能主治是什么,有什么功效作用好处?
盆栽植物一定要定期换盆吗?该如何换盆?
北戴河旅游必打卡的5大景点,错过可惜!
国家医保局:回应临床关切,DRG/DIP2.0版本分组方案发布
草原科普|盐湖为什么色彩斑斓? “盐”又是从何而来?
怎样优化机关事业单位的请假休假制度以提高员工满意度?
怎么查老赖?一文详解查询方法与法律问题
施工单位项目管理指南:从目标设定到持续改进
如何正确使用螺丝刀拆卸摩托?这种操作对车辆维修有什么影响?
接口文档编写的最佳实践指南:如何编写高效且易于维护的接口文档?
女性“尿液很黄、异味很大”,如何才能科学改善?找准原因是关键
英国停车罚款怎么交
平台赋能,让地方戏重返日常生活
血型遗传规律表:解读血型遗传的奥秘
醴陵旅游攻略景点必去:热门推荐与全面指南
实现收入来源多样化的有趣方法
0~3岁儿童的心理发展特点及表现:依恋
所有长久的关系,都是讲条件的
颈动脉内中膜增厚1.2mm的危害及治疗方法