У меня есть макрос, который берет столбец и разбивает его на несколько столбцов по 444, потому что мой максимальный диапазон составляет 444 строки. Как я могу затем перебирать каждый столбец и в идеале назначить диапазон с тем же именем, но в формате массива.
Я также готов отказаться от идеи разделения столбца и просто иметь что-то вроде for each 444 rows, create rng.
Затем for each rng in rng.arry
Сделайте XYZ.
Обновление: в основном у меня есть строка с 1000 значениями. Я хотел бы иметь массив диапазонов в таком формате:
rng(0) = A1:A444
rng(1) = A445:A889
rng(2) = A890:A1000
Тогда я могу l oop через каждый rng следующим образом:
For each rng in rng.array
... Do Stuff
End For
Вот что Мне нужно разбить столбец, но я поискал массивы диапазонов и ничего не нашел.
Sub Four_Hundred_Fourty_Four_Split_Sub()
Dim lastRow As Long, copynumRow As Long
Dim cRow As Long, cCol As Long
Dim wb As Workbook, ws As Worksheet
Dim rng As Range
If IsEmpty(urng) = False Then
Debug.Print urng
Set urng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
End If
Set rng = Range(Col_Letter(urng.Column) & "1:" & Col_Letter(urng.Column) & Cells(Rows.Count, urng.Column).End(xlUp).Row)
Set wb = ActiveWorkbook
Set sSheet = ActiveSheet
WorksheetCreate ("444_Split")
Set ws = wb.Worksheets("444_Split")
sSheet.Select
rng.Copy Destination:=ws.Range(Col_Letter(urng.Column) & "1:" & Col_Letter(urng.Column) & Cells(Rows.Count, urng.Column).End(xlUp).Row)
Application.ScreenUpdating = False
copynumRow = 444
cCol = 2
cRow = 1 + copynumRow
With ws
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
Do While cRow <= lastRow
.Range("A" & cRow).Resize(copynumRow, 1).Cut _
Destination:=.Cells(1, cCol).Resize(copynumRow, 1)
cRow = cRow + copynumRow
cCol = cCol + 1
Loop
End With
Application.ScreenUpdating = True
ws.Select
End Sub