Страницы: 1
RSS
VBA копирование ячейки с условием
 
Добрый день! Коллеги, прошу помощи в решении задачи на VBA. Требуется скопировать ячейку n раз вниз через каждые m строк.
 
Код
Sub Макрос1()
For i = 1 To [b3]
Cells(([b4] + 1) * i + 2, 10) = [j2]
Next
End Sub
 
Настя_Nastya, большое спасибо! Вы не могли бы объяснить что в этой строке
Цитата
Настя_Nastya написал:
Cells(([b4] + 1) * i + 2, 10) = [j2]
означает +1, +2 и 10?

Кажется понял, 2 это строка, 10 это столбец, а +1 это +1
Изменено: Murderface_ - 03.03.2020 22:04:12
 
Еще вариант:
Код
Sub КопированиеАктивнойЯчейки()
'aequit 03.03.2020
    Dim i&, r As Range, n&, m&
    n = Application.InputBox("Сколько раз скопировать ячейку?", "Запрос данных", "", Type:=1)
    m = Application.InputBox("Через сколько строк скопировать ячейку?", "Запрос данных", "", Type:=1)
    Set r = ActiveCell
    For i = m To n * (m + 1) Step m + 1
        r.Copy Cells(r.Row + i + 1, r.Column)
    Next i
End Sub
 
aequit, спасибо! Но почему то долго выполняется при копировании например на несколько тысяч раз.
 
+1 это на какую строку после заполненной копировать (у Вас через 6, значит 6 +1 - то есть на каждую седьмую)
+2 с какой строки начать, у Вас значение во второй строке, значит +2
+10 - это номер столбца в котором нужно копировать (J)
лучше, конечно, все в переменные внести, но это я уже Вам оставила - на сладкое))) главное суть
Изменено: Настя_Nastya - 03.03.2020 22:11:45
 
Настя_Nastya, да, все очень доходчиво объяснили. Благодарю  :)  
 
Цитата
Murderface_ написал:
долго выполняется
Любое массовое чтение-запись с листа-на лист довольно длительная операция. К тому же, в моём варианте копируется не только значение, но и форматирование ячейки. Если оно не нужно, замените строку r.Copy Cells(r.Row + i + 1, r.Column) на Cells(r.Row + i + 1, r.Column) = r Увидите разницу.
 
aequit, спасибо! Возьму на заметку  :)  
Страницы: 1
Наверх