Рецепт

Прочитать диапазон в массив

Обойти тысячи ячеек в цикле слишком медленно.

Одно присвоение Value2 даёт двумерный Variant даже для одного столбца. Индексация с 1. После обработки запишите массив обратно через Resize.

Код

Sub ReadBlock()
    Dim ws As Worksheet
    Dim data As Variant
    Dim i As Long
    Set ws = ThisWorkbook.Worksheets("Данные")
    data = ws.Range("A2:D1000").Value2
    For i = 1 To UBound(data, 1)
        ' data(i, 1)
    Next i
End Sub

Связанные члены API