VBA-用两个字典替换自动筛选器

时间:2018-12-15 19:53:31

标签: vba dictionary replace

我正在尝试将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

1 个答案:

答案 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