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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2017, 12:38   #1
dendodor
 
Регистрация: 13.02.2017
Сообщений: 3
По умолчанию оптимизация макроса в excel

Добрый день. Заранее прошу камнями не бросаться в меня, ибо не программист я))). Есть следующая задача: в excel есть след столбцы:
1 - подразделение
2 - ФИО
3 и послед. - это некие данные

Так вот идет группировка по подразделению и ФИО, т.е. заполняется один раз и далее просто не заполняется ячейка в этом столбце до тех пор, пока не меняются данные в этом столбце.

Написал следующий макрос, чтоб автоматически заполнять такие пропущенные ячейки (это нужно для того, чтоб можно было в дальнейшем пользоваться автофильтром), но он выполняется очень медленно. Помогите оптимизировать, плиз.
Вот код:

Sub macros1()

Dim i As Long

i = 3
Do While IsEmpty(Cells(i, 3).Value) = False


If Cells(i, 2) = "" Then
Range(Cells(i - 1, 1), Cells(i - 1, 2)).Copy Cells(i, 1)
ElseIf Cells(i, 2) <> 0 And Cells(i, 1) = "" Then
Cells(i - 1, 1).Copy Cells(i, 1)
End If

i = i + 1
Loop

End Sub
dendodor вне форума Ответить с цитированием
Старый 20.02.2017, 12:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Точно хотите макроса? Может стандартными средствами лучше?
https://www.youtube.com/watch?v=zspnGJ-s6tc

Ну или так как-то, для вашего примера
Код:
Sub newMakro()
    Dim r As Long
    r = Cells(Rows.Count, 3).End(xlUp).Row 
    Range("B2:B" & r).SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "=r[-1]c"
    Application.CutCopyMode = False
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 20.02.2017 в 12:59.
Aleksandr H. вне форума Ответить с цитированием
Старый 20.02.2017, 13:42   #3
dendodor
 
Регистрация: 13.02.2017
Сообщений: 3
По умолчанию

Класс. Этого вполне достаточно. СПАСИБО!!! А подскажите, плиз, еще как сохранить название книги по подразделению + дата, т.е. когда отфильтрую исходную книгу по подразделению, мне надо все данные по этому подразделению перенести в другую одноименную книгу и добавить дату (или диапазон дат)?
dendodor вне форума Ответить с цитированием
Старый 20.02.2017, 13:55   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

пришлите на Devid17@inbox.ru файл с данными - наваяю макроса.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация макроса Intension Microsoft Office Excel 8 12.08.2013 17:30
Оптимизация файла Excel ILF_ollie Microsoft Office Excel 1 09.04.2013 23:52
Скорость исполнения макроса в Excel-2010 намного ниже, чем в Excel-2003 Павел+ Microsoft Office Excel 5 29.12.2010 03:28
Оптимизация времени исполнения макроса basil0 Microsoft Office Excel 12 06.12.2010 10:20
Excel, оптимизация Nimfetka... Помощь студентам 5 11.05.2010 08:39