Ваш код в порядке, единственная ошибка в том, что вы повторно используете одну и ту же переменную из вашего внутреннего цикла, которая будет сбрасываться в каждом внешнем цикле. Чтобы обойти это, просто используйте дополнительную переменную как таковую:
Sub Collection()
Dim arrDate() As Variant
Dim arrRngTotal As Variant
Dim rng_1 As Range, rng_2 As Range, rng_3 As Range
Dim ws_1 As Worksheet, ws_2 As Worksheet
Dim j As Integer, k As Integer, X As Long
Set ws_1 = ThisWorkbook.Sheets(1)
Set ws_2 = ThisWorkbook.Sheets(2)
' Example of ranges, not static in the original code.
Set rng_1 = ws_1.Range("A2:A10")
Set rng_2 = ws_1.Range("A11:A22")
Set rng_3 = ws_2.Range("A2:A22")
arrRngTotal = Array(rng_1.Value, rng_2.Value, rng_3.Value)
For k = LBound(arrRngTotal, 1) To UBound(arrRngTotal, 1)
For j = LBound(arrRngTotal(k), 1) To UBound(arrRngTotal(k), 1)
X = X + 1 'Add an additional counter
ReDim Preserve arrDate(X)
arrDate(X) = arrRngTotal(k)(j, 1)
Next j
Next k
End Sub
РЕДАКТИРОВАТЬ: небольшое изменение, чтобы улучшить скорость согласно предложению @Tom ... см. Комментарии для получения дополнительной информации.
Sub Collection()
Dim arrDate() As Variant: ReDim arrDate(1 To 1)
Dim arrRngTotal As Variant
Dim rng_1 As Range, rng_2 As Range, rng_3 As Range
Dim ws_1 As Worksheet, ws_2 As Worksheet
Dim j As Integer, k As Integer, X As Long
Set ws_1 = ThisWorkbook.Sheets(1)
Set ws_2 = ThisWorkbook.Sheets(1)
' Example of ranges, not static in the original code.
Set rng_1 = ws_1.Range("A2:A10")
Set rng_2 = ws_1.Range("A11:A22")
Set rng_3 = ws_2.Range("A2:A22")
arrRngTotal = Array(rng_1.Value, rng_2.Value, rng_3.Value)
'Dimension the holding array outside the main data loop, unless you need to do this inside based on various conditions
For k = LBound(arrRngTotal, 1) To UBound(arrRngTotal, 1)
X = X + UBound(arrRngTotal(k))
Next k
ReDim Preserve arrDate(1 To X): X = 0
For k = LBound(arrRngTotal, 1) To UBound(arrRngTotal, 1)
For j = LBound(arrRngTotal(k), 1) To UBound(arrRngTotal(k), 1)
X = X + 1
arrDate(X) = arrRngTotal(k)(j, 1)
Next j
Next k
End Sub