maybe so
Sub Count_Names()
Dim vaRoster() As Variant, vaNames() As Variant, vaPNames() As Variant
Dim i As Long, vaCount As Long, x As Variant
'I have a range on one sheet which I have added to an array
vaRoster = ActiveSheet.Range("C5:D24").Value
'...and another range on another sheet added to an array
vaNames = Sheets("Name_Matrix").Range("B5:C68").Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For i = 1 To UBound(vaNames)
If vaNames(i, 1) = "P" Then .Item(vaNames(i, 2)) = 1 '(just fill the dictionary)
Next i
For Each x In vaRoster
If Len(x) > 0 Then
If .Exists(x) Then 'If value in array matches value in 2nd array
vaCount = vaCount + 1: ReDim Preserve vaPNames(1 To vaCount) '(3rd array is one-dimensional array)
vaPNames(vaCount) = x '...I want to add that value to a 3rd array.
End If
End If
Next x
End With
MsgBox vaCount
'or
MsgBox UBound(vaPNames)
End Sub
Bookmarks