Reimitando uma matriz no VBA

Eu tenho um problema sério com o redimensionamento de uma matriz bidimensional no VBA. Fiz muita leitura sobre esse problema (popular), mas ainda não consigo entender o que há de errado no meu código.

Então, eu tenho alguns dados em uma planilha. Na segunda linha eu tenho algumas descrições de um elemento, enquanto na primeira linha eu tenho categorias desses elementos. O que eu quero fazer é criar uma matriz que tenha categorias (distintas) na primeira linha e índices de descrições relacionadas a uma categoria específica na segunda linha. O código funciona corretamente até If j = UBound (distinctList, 2) Então ReDim entra e eu recebo um erro "Subscrito fora do intervalo". That If está lá para adicionar uma nova categoria e deve entrar em ação se a entrada da planilha não for igual a nenhuma entrada da nova matriz.

Function distinctValues(arr)
Dim distinctList() As String
Dim j As Integer
k = 0

'ReDim distinctList(0 To 0, 0 To 1)

'Dodaj pierwszy wpis
For i = LBound(arr) To UBound(arr)
    If arr(i) <> "" Then
        ReDim distinctList(0 To 1, 0 To j)
        distinctList(0, 0) = arr(i)
        distinctList(1, 0) = i + 1
        'k = k + 1
        Exit For
    End If
Next i

'Dodaj kolejne wpisy
For i = LBound(arr) + 1 To UBound(arr)
    If arr(i) <> "" Then
        For j = LBound(distinctList, 2) To UBound(distinctList, 2)
            If arr(i) = distinctList(0, j) Then
                distinctList(1, j) = distinctList(1, j) & ", " & i + 1
                'k = k + 1
                Exit For
            End If
            If j = UBound(distinctList, 2) Then
                ReDim Preserve distinctList(0 To 1, 1 To UBound(distinctList, 2) + 1)
                distinctList(0, j) = arr(i)
                distinctList(1, j) = distinctList(UBound(distinctList, 2), 1) & ", " & i + 1
                Exit For
            End If
        Next j
    End If
Next i


Debug.Print distinctList(0, 0) & " => " & distinctList(1, 0)
'distinctValues = distinctList

End Function

questionAnswers(2)

yourAnswerToTheQuestion