Макрос Excel для переформатирования данных - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно переформатировать строку данных 33500 в Excel.Я пытаюсь написать макрос, который бы сделал это для меня.

Я поместил некоторый вложенный цикл для решения проблемы

Dim i As Integer
Dim m As Integer
Dim n As Integer
Dim K As Integer
Dim p As Integer
Dim c As Integer

For c = 0 To 10

    For n = 5 To 10

        K = 14 + 7 * (n - 5)

        For i = 0 To 7
            m = 14 + 8 * c
            ActiveSheet.Cells(m + i, n).Select
            Selection.Copy

            ActiveSheet.Cells(K + i, 37).Select
            ActiveSheet.Paste
        Next i

    Next n

Next c

Я застрял в том, как выполнить эту операцию для32500 строк

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Пересмотрен код в соответствии с комментарием и теперь работает как шарм.Большое спасибо

Dim i Как целое число Dim m Как целое число Dim n Как целое число Dim K Как целое число Dim p Как целое число

Для i = от 0 до 121

m =14 Для n = 5–35

ActiveSheet.Range (Ячейки (m + i * 8, n), Ячейки (m + i * 8 + 7, n)). Копировать

Диапазон("AK" & Rows.Count) .End (xlUp) .Offset (1) .PasteSpecial xlValues ​​

Next n

Next i

End Sub

0 голосов
/ 31 мая 2019

В Excel Integer есть диапазон значений от -32 768 до 32 767, поэтому может возникнуть проблема с форматированием 33 500 строк. Предполагая, что вы довольны тем, как работает ваш код, изменение типа переменных на Long может быть хорошим началом.

Кстати, вы должны избегать SELECTing ячеек, так как это замедляет код и может привести к ошибкам. Вы можете легко копировать и вставлять между ячейками, используя что-то вроде

Cells(m + i, n).Copy Destination:=Cells(K + i, 37)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...