Сначала начните свой varArray с 1, а не с 0. Вместо ReDim varArray(0)
сделайте:
ReDim varArray(1 to 1)
И
i = 1
Вместо i=0
Затемпросто присвойте массив без цикла:
ThisWorkbook.Worksheets("Profiles").Range("C2").Resize(1,UBound(varArray)).Value = varArray
Метод, которым вы строите массив, является горизонтальным, а не вертикальным, поэтому не требуется транспонирование.
Но чтобы ускорить процесс, нужно зациклить массив, а не диапазон:
Sub JC_Fill()
With ThisWorkbook.Worksheets("Sheet1")
Dim varArray() As Variant
ReDim varArray(1 To Application.CountIf(.Range("B:B", "JC"))) 'resize array
Dim lstRow As Long
lstRow = .Cells(.Rows.Count, 2).End(xlUp).Row
Dim rng As Variant
rng = .Range(.Cells(1, 1), .Cells(lstRow, 2))
Dim x As Long
x = 1
Dim i As Long
For i = LBound(rng, 1) To UBound(rng, 1)
If rng(i, 2) = "JC" Then
varArray(x) = rng(i, 1)
x = x + 1
End If
Next i
End With
ThisWorkbook.Worksheets("Profiles").Range("C2").Resize(1, UBound(varArray)).Value = varArray
End Sub