Вы всегда можете хранить эти столбцы в зубчатом массиве , массиве массивов.Синтаксис на самом деле довольно прост в VBA;вы можете хранить все .Value
диапазона (в виде массива) внутри другого (ранее затемненного) массива.
Когда вы работаете с диапазоном, который включает несколько поддиапазонов (смежных или нет), вы можете получить к ним доступ отдельно, зацикливаясь на свойстве .Areas
этого диапазона .
Единственное, с чем вам следует быть осторожным, это индексы, потому что синтаксис немного прикольный, и в вашем конкретном примере вы не начинаете с первой строки.
Option Explicit
Sub NonContiguousRanges()
Dim rng As Range
Set rng = Range("C2:C20, G2:G20, J2:J20, T2:T20")
Dim jagged As Variant
ReDim jagged(1 To rng.areas.count)
Dim i As Long
For i = 1 To rng.areas.count
jagged(i) = rng.areas(i).Value2
Next i
'=-~ examples of accessing the values ~-='
'first value, C2
MsgBox jagged(1)(1, 1)
'last value, T20
MsgBox jagged(4)(19, 1)
MsgBox jagged(UBound(jagged))(UBound(jagged(UBound(jagged))), 1)
End Sub
Я имею в виду простопосмотри на все эти UBound
с ... у меня немного болит голова, просто я все понял!