¿Y cómo cargaste el array?
Si estás trabajando con matrices, la matriz se carga en memoria, puedes hacer un loop a la matriz y cargar en una segunda matriz los datos filtrados. Como ambas matrices están en memoria, la respuesta debe ser inmediata.
Para eliminar los duplicados, hay que crear un índice, esto se crea con un Diccionario (Scripting. Dictionary)
Por ejemplo:
Option Explicit
'
Sub test1()
'Por Dante Amor
'
'Eliminar duplicados en una matriz
'
'declarar variables
Dim a As Variant, b As Variant
Dim sh As Worksheet
Dim dic As Object
Dim i As Long, j As Long, k As Long
Dim llave As String
'
'establece en el objeto sh la hoja
Set sh = Sheets("Hoja1")
Set dic = CreateObject("Scripting.Dictionary")
'
'carga la matriz en 'a'
a = sh.Range("A2", sh.Range("S" & Rows.Count).End(3)).Value
'dimensionas la matriz de salida 'b', con las mismas dimensiones de la matriz 'a'
ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
'
'recorres la matriz 'a'
For i = 1 To UBound(a, 1)
'las columnas en la matriz 'a' que corresponden a "P" y "Q" son: 16 y 17
llave = a(i, 16) & "|" & a(i, 17)
'si la llave ya existe, entonces esa fila no se agrega en la matriz 'b'
If Not dic.exists(llave) Then
'si la llave 16 y 17 no existe en el índice, entonces se agrega en el índice
dic(llave) = Empty
'y también cargas los datos en 'b'
k = k + 1
For j = 1 To UBound(a, 2)
b(k, j) = a(i, j)
Next
End If
Next
'Puedes poner la salida en otra columna de la hoja
sh.Range("BA2").Resize(k, UBound(b, 2)).Value = b
End Sub
Si quieres aprender más sobre el objeto Scripting.Dictionary:
https://excelmacromastery.com/vba-dictionary/