Разделить массив в VBA и вывести на несколько столбцов в Excel - PullRequest
0 голосов
/ 10 февраля 2019

У меня длинный массив, который превышает максимальное количество строк в одном столбце (1048576), и я хочу вывести этот массив в несколько столбцов, например, если длина моего массива составляет 3145728, и поэтому я намерен создать3 отдельных массива, каждый с длиной 1048576, поэтому от 1 до 1048576 будут выводиться в столбец A, с 1048577 по 2097152 в столбец B и с 2097153 по 3145728 в столбец C. Мой код был следующим:

Sub test()

'for simplicity, just created a simply long array
Dim arrIn(1 To 3145728, 1 To 1) As Long
For i = 1 To 3145728
    arrIn(i, 1) = i
Next i

'created 3 separate arrays, each with length of 1048576
Dim arrOut1(1 To 1048576, 1 To 1) As Long, arrOut2(1 To 1048576, 1 To 1) As Long, arrOut3(1 To 1048576, 1 To 1) As Long
Dim p As Long, p2 As Long, p3 As Long

'because counter p is going to be from 1 to 3145728, for the second and third arrays, the counter need to restart from 1 and upto 1048576
p2 = 1
p3 = 1

For p = 1 To 3145728

    Select Case p

        Case Is <= 1048576
            arrOut1(p, 1) = arrIn(p, 1)

        Case Is <= 2097152
            arrOut2(p2, 1) = arrIn(p, 1)
            p2 = p2 + 1

        Case Is <= 3145728
            arrOut3(p3, 1) = arrIn(p, 1)
            p3 = p3 + 1

    End Select

Next p

Range("A1:A1048576") = arrOut1
Range("B1048577: B2097152") = arrOut2
Range("C2097153:C3145728") = arrOut3

End Sub

Первый столбец (arrOut1) был выведен в столбец A, однако, когда дело доходит до второго столбца (arrOut2), VBA возвращает ошибку времени выполнения '1004': сбой Menthod 'Range' объекта '_Global'.

Я проверил результаты локальных окон, p2 и p3 были 1048577, и arrOut2 (1,1) = 1048577, arrOut2 (1,1) = 1048578 и т. Д., Кажется, что массивы все заполняются, однако яне уверен, что мешает им выплюнуть на колонны.Спасибо за ваш совет.

1 Ответ

0 голосов
/ 10 февраля 2019

Ладно, только что понял, что Range («B1048577: B ...) был ерундой ... так что это решаемо.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...