Циклическое копирование в строках столбцов - PullRequest
0 голосов
/ 18 октября 2018

Доброе утро,

Я хотел бы спросить вас, как циклически копировать массовые значения данных в строках.

В моем случае есть десятки таблиц, куда мне приходится вводить данные,В соответствии с формулами Excel, я могу скопировать его, используя опцию Вставить формулы.

Однако в VBA, когда я использую приведенный ниже код, он кажется здоровенным:

Sub sum_month()
Sheets("13").Activate
Range("EG822").Formula = "=SUM(EG12+EG282+EG552)"            '-4
Range("EG822").Copy
Range("EG822:FT846").PasteSpecial xlPasteFormulas
Range("EG822:FT846").Copy
Range("FY822:HL846").PasteSpecial xlPasteFormulas
Range("HR822:JE846").PasteSpecial xlPasteFormulas

Range("EG852").Formula = "=SUM(EG42+EG312+EG582)"            '-3
Range("EG852").Copy
Range("EG852:FT876").PasteSpecial xlPasteFormulas
Range("EG852:FT876").Copy
Range("FY852:HL876").PasteSpecial xlPasteFormulas
Range("HR852:JE876").PasteSpecial xlPasteFormulas

Range("EG882").Formula = "=SUM(EG72+EG342+EG612)"            '-2
Range("EG882").Copy
Range("EG882:FT906").PasteSpecial xlPasteFormulas
Range("EG882:FT906").Copy
Range("FY882:HL906").PasteSpecial xlPasteFormulas
Range("HR882:JE906").PasteSpecial xlPasteFormulas
End Sub

В основном я должен сделатьскопируйте на шаге 30 в той же строке (проблема связана со многими столбцами в соответствии с приведенным выше кодом).

Кто-нибудь знает, как с этим бороться?

Спасибо,

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Эта формула работает:

Sub sum_1to10_fillUK()
Dim i As Long
For i = 0 To 474 Step 52  'total amount of rows = 472, that includes 9 tables (each with 52 rows) + 3 rows free spaces between them
With Sheets("14")
.Range("FP12").Offset(RowOffset:=i).Copy     'The SUM for FP12 has been calculated in another loop, so I am only copying the formulas from here.
.Range("FP12:HN58, HT12:JR58, JX12:LV58").Offset(RowOffset:=i).PasteSpecial xlPasteFormulas               ' where FP-HN is 1st table, HT-JR - 2nd one and JX-LV - the last one from the right (see the picture)
End With
Next i
End Sub

enter image description here

0 голосов
/ 18 октября 2018

Вы можете использовать цикл For i с Step 30, а затем .Offset из вашего первого диапазона i строк.

Обратите внимание, что формулу суммы также необходимо скорректировать.

Sub sum_month()
    Dim i As Long
    For i = 0 To 60 Step 30
        With Sheets("13")
            .Range("EG822").Offset(RowOffset:=i).Formula = "=SUM(EG" & 12 + i & "+EG" & 282 + i & "+EG" & 552 + i & ")"    '-4
            .Range("EG822").Offset(RowOffset:=i).Copy
            .Range("EG822:FT846").Offset(RowOffset:=i).PasteSpecial xlPasteFormulas
            .Range("EG822:FT846").Offset(RowOffset:=i).Copy
            .Range("FY822:HL846").Offset(RowOffset:=i).PasteSpecial xlPasteFormulas
            .Range("HR822:JE846").Offset(RowOffset:=i).PasteSpecial xlPasteFormulas
        End With
    Next i
End Sub

Я рекомендую никогда не использовать .Activate или .Select.См. Как избежать использования Select в Excel VBA .

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