我正在尝试将Autofilter替换为两个字典,但这是否无法按我期望的方式工作。
我一直在想-表1中的数据将存储在dict中,而dictF将是我要查找的另一个小表。
它应同时检查dictF中每个字典元素的所有条件。
如果dict中的元素不在dictF中,则应删除此元素。
因此伪代码解密将是:
对于dict中的每个项目,请同时检查dictF的所有元素,如果dict中的项目是那些dictF元素之一,则将其保留在dict中,否则从dict中删除项目。
在这里非常重要-dictf中甚至可能有20个键需要一步检查。
我要删除的例程的代码
For Each a In dict.Keys()
For Each b In dictF.Keys()
If NOT dict.Exists(b) Then
c = 0
Else
c = 1
End If
If c = 0 Then dict.Remove a
Next b
Next a
答案 0 :(得分:2)
也许如下
Option Explicit
Public Sub CheckDicts()
'If element from dict is not in dictF then this element should be removed.
Dim dict As Object, dictF As Object
Set dict = CreateObject("Scripting.Dictionary")
Set dictF = CreateObject("Scripting.Dictionary")
dict.Add "a", 1
dict.Add "b", 2
dict.Add "c", 2
dictF.Add "a", 1
dictF.Add "b", 2
dictF.Add "d", 2
Dim key As Variant
For Each key In dict
If Not dictF.Exists(key) Then dict.Remove key
Next
End Sub