Список всех уникальных значений на основе критериев - PullRequest
0 голосов
/ 18 марта 2019

Мне нужно перечислить все значения, которые имеют определенные критерии, в других столбцах, как показано here

У меня есть следующее:

Sub arytest()

Dim ary()
Dim note2()
Dim lastrow As Long
Dim i As Long
Dim k As Long
Dim eleAry, x

'Number of rows in my data file
lastrow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row

'The maximum length of my array
ReDim ary(1 To lastrow)

k = 1
For i = 1 To lastrow
    If Cells(i, 2) Like "*Note 2*" _   ' Criterias that needs to be fullfilled
    And Cells(i, 1) Like "Actuals" _
    And Cells(i, 4) Like "Digitale Brugere" Then
        ary(k) = Cells(i, 3)
        k = k + 1
    End If
Next i

End Sub

В этом коде перечислены все значения, которые мне нужны. Однако некоторые из них присутствуют несколько раз. Как я могу удалить дубликаты?

1 Ответ

1 голос
/ 18 марта 2019

Вот еще один способ, поэтому вам не нужно удалять дубликаты позже, используя Scripting Dictionary (вам нужно проверить Microsoft Scripting Runtime в библиотеках, чтобы это работало)

Sub arytest()

    Dim ary()
    Dim note2() 'unsued
    Dim lastrow As Long
    Dim i As Long
    Dim k As Long
    Dim eleAry, x 'unused
    Dim DictDuplicates As Scripting.Dictionary

    Set DictDuplicates = New Scripting.Dictionary
    'Number of rows in my data file
    lastrow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row

    'The maximum length of my array
    ReDim ary(1 To lastrow)

    k = 1
    For i = 1 To lastrow
        ' Criterias that needs to be fullfilled
        If Cells(i, 2) Like "*Note 2*" _
        And Cells(i, 1) Like "Actuals" _
        And Cells(i, 4) Like "Digitale Brugere" Then
            If Not DictDuplicates.Exists(Cells(i, 3).Value) Then 'check if the value is already on the array
                ary(k) = Cells(i, 3)
                DictDuplicates.Add Cells(i, 3).Value, i 'if it does not exists, add it to the dictionary
            End If
            k = k + 1
        End If
    Next i

End Sub

IВы также видели некоторые переменные, неиспользованные в вашем коде, или, по крайней мере, то, что вы опубликовали.

PS: при использовании оператора Like вы должны использовать подстановочные знаки * или ?, без нихкак если бы вы использовали оператор =.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...