Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2015, 17:45   #1
Таруми
Новичок
Джуниор
 
Регистрация: 18.05.2015
Сообщений: 2
Вопрос написать макрос для дубляжа строк

вышла после декрета на работу. мозг включаться пока отказывается.

есть простенькая табличка в эксель: 5столбцов, 5100 строк. нужно продублировать строки по два раза, чтобы их стало 15300)))
т.е было
1
2
3
стало
1
1
1
2
2
2
3
3
3

как продублировать всю таблицу 3 раза -не вопрос. хоть 150 раз. а вот такой макрос сообразить не могу.
Таруми вне форума Ответить с цитированием
Старый 18.05.2015, 17:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте такой макрос (взял тут):
Код:
Option Explicit

Sub vstavka()
Dim iLastRow As Long
Dim i As Long
Dim n As Long

iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = iLastRow To 1 Step -1
For n = 1 To 3
  Cells(i, 1).EntireRow.Copy
  Cells(i, 1).EntireRow.Insert xlDown
Next
Next
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2015, 18:14   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Add2Rows()
  Dim r As Long
  For r = 1 To 5100 Step 3
    Rows(r).Copy
    Rows(r + 1).Resize(2).Insert shift:=xlDown
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.05.2015, 18:17   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так 3 строки добавится
For n = 1 To 3
нужно
For n = 1 To 2

или потом еще цикл и лишнюю строку - удалить)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2015, 07:38   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Sub Add2Rows()
  Dim r As Long
  For r = 1 To 5100 Step 3
    Rows(r).Copy
    Rows(r + 1).Resize(2).Insert shift:=xlDown
  Next
End Sub
Так продублируется только треть таблицы. Цикл нужно увеличить:
Код:
For r = 1 To 5100 * 3 Step 3
Перед циклом целесообразно добавить:
Код:
Application.ScreenUpdating = False
А после цикла:
Код:
Application.CutCopyMode = False
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.05.2015, 08:03   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако...
насколько бы мудр не был человек - не проходит и дня чтобы он не умудрился!!!)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2015, 08:48   #7
Таруми
Новичок
Джуниор
 
Регистрация: 18.05.2015
Сообщений: 2
Радость

спасибо люди-человеки!
Таруми вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос для переноса строк по условию SergeyR Microsoft Office Excel 2 07.08.2012 17:49
макрос для удаления строк??? mixa2997510 Microsoft Office Excel 3 21.05.2012 13:38
макрос для нумерации строк Olya1985 Microsoft Office Excel 5 07.01.2011 23:46
для работы написать макрос для Excel и Word.... smanna Microsoft Office Excel 2 30.11.2010 12:43
Макрос для удаления повторяющихся строк Jelena_bsb Microsoft Office Excel 3 05.08.2010 13:34