Приведенный ниже код не проверен по очевидным причинам и может содержать опечатки или небольшие ошибки. Я верю, что вы сможете исправить их. Обратите внимание, что более эффективно измерять массив больше, чем требуется, и в конце дать ему окончательный размер. Большой UBound не требует места в оперативной памяти.
Sub CreateNewArray()
Dim NewAssigneesArray() As Variant
Dim i As Long
Dim a As Long, b As Long
' set a (UBound, 2) a lot higher than what you will ever need.
' note that you can't Redim (UBound, 1), only (UBound, 2)
ReDim NewAssigneesArray(1 To 3, 1 To 5000)
For a = LBound(AllAssigneesUnique) To UBound(AllAssigneesUnique)
For b = LBound(DB_Array, 1) To UBound(DB_Array, 1)
' Use VbBinaryCompare for a case sensitive comparison
If StrComp(AllAssigneesUnique(a), DB_Array(b, 1), vbTextCompare) = 0 Then
i = i + 1
NewAssigneesArray(1, i) = DB_Array(b, 1)
NewAssigneesArray(2, i) = DB_Array(b, 2)
NewAssigneesArray(3, i) = "New"
Exit For
End If
Next b
Next a
ReDim Preserve NewAssigneesArray(1 To 3, 1 To i)
End Sub