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
热门推荐
生气吵架后肚子痛?原因与缓解方法大揭秘!
显卡性价比解析:如何在预算内找到最佳选择
人工智能就业方向有哪些?
另一半抑郁症应该如何理解和面对?如何改善另一半的心理健康?
倒叙三要点法:选择有力切入点、维持逻辑连贯性、适时揭露真相
近视的罪魁祸首竟是TA?遗传和电子产品都要靠后
第一印象很重要
梦见老房子被拆的深层寓意
感冒了怎么办?
钢企也DeepSeek?杭钢股份涨停,联合国产GPU团队技术攻关
中国航空发动机,我国目前到底在什么水平呢?
当代青年婚恋观、生育观、家庭观现状及培育新型婚育文化的建议
跑步者必看:四个动作缓解跟腱痛!
揭秘精装施工图审图技巧:施工阶段的质量与成本把控
教师必备的6大黄金话术模型,轻松实现家校共育!(建议收藏)
自我探索的旅程:如何发现真正的自己并实现成长
上海法院案例:业绩不达标被辞退,公司被判支付4万赔偿金
鼓浪屿上的蓝色水晶宫:厦门海底世界的奇妙之旅
黄芪颗粒:中医界的全能选手?使用前必读的注意事项
江雪的作者:诗意背后的传奇故事与深远影响
消除浪费,创造价值:精益生产的核心原则与实践
人力资源管理中的沟通与冲突解决艺术:从理论到实践
数据中心互连:如何选到带优质SerDes接口的硬件?
与不同性格的人交往
保险,你的理财守护神!
《津巴多普通心理学》:人际关系最佳状态的科学解析
商业险成企业风险管理利器
华为如何应对反腐?任正非多次强调,要杜绝腐败
双十一购物狂欢,Scriptable帮你实时监控优惠信息!
美联储降息50个基点,企业融资成本如何变化?