Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Протянуть формулы макросом, Протянуть формулу до первой пустой ячейки по горизонтали и по вертикали
 
Доброго дня.
Ищу помощи, так как сам не силен в VBA, но возникла необходимость протянуть формулы массива вправо только до тех пор пока в строке выше есть значения. т.е. необходимо протянуть формулу вправо до первой пустой ячейки в строке выше, а затем протянуть ниже до первой пустой ячейки в столбце слева... Статичное кол-во ячеек задать не получится так как значений может быть всегда разное кол-во. Очень прошу помочь в этом вопросе. Пример приложен. На листе "Итог" данные которые необходимо получить из листа "Исходные данные".
 
Попробуйте так, м.б.:
Скрытый текст
Кому решение нужно - тот пример и рисует. (Это не призыв, это, - констатация).
 
Спасибо большое. Вроде работает.
Но я не понимаю почему такая нагрузка на процессор? (очень долго работает после запуска) Можете посоветовать как это упростить может быть? или проблема в формуле массива? Просто если в файле примера всего 10 строк, то в рабочем файле их количество может достигать 5000 с куда большим кол-вом столбцов... Просто боюсь при запуске на рабочем файле буду ждать несколько часов до завершения... Заранее спасибо.
 
Можно попробовать в начале кода отключить пересчет формул автоматический, а в конце кода включить обратно:
Код
'в начале кода
Application.Calculation = xlCalculationManual
...код...
Application.Calculation = xlCalculationAutomatic

чтобы формулы массива на лету не пересчитывались при вставке, а занимались этим... потом. :)
Кому решение нужно - тот пример и рисует. (Это не призыв, это, - констатация).
 
Спасибо еще раз.
Но видимо от перемены мест слагаемых сумма та же, т.е. я убедился что проблема в формуле массива... буду думать чем ее возможно заменить.
Вы мне очень помогли)
 
Я еще не много не понял относительно того, с какой ячейки начинает протягивать формулу? Просто мне необходимо что бы непосредственно с ячейки С3 т.к. в ячейке В3 так же будет формула, но ее протягивать не нужно... Заранее спасибо.
 
Код
Sub T_274()
'от ячейки с адресом 3строка, 3столбец (в переводе на нормальный - С3) занимаемся автозаполнением вправо до конца заполненных ячеек по строке 2
'вычислением конца заполненных ячеек занимается конструкция [c2].CurrentRegion.Columns.Count
Cells(3, 3).AutoFill Destination:=Cells(3, 3).Resize(1, [c2].CurrentRegion.Columns.Count) 
'далее вышезаполненную строку автозаполнением растягиваем вниз на заполненные строки по столбцу А. 
'вычислением заполненных строк занимается [a3].CurrentRegion.Rows.Count
'resize занимается изменением диапазонов куда тянуть относительно начальной ячейки с формулой
Cells(3, 3).Resize(1, [c2].CurrentRegion.Columns.Count).AutoFill Destination:=Cells(3, 3).Resize([a3].CurrentRegion.Rows.Count, [c2].CurrentRegion.Columns.Count)
End Sub
Кому решение нужно - тот пример и рисует. (Это не призыв, это, - констатация).
 
Извините за лишний вопрос) Безмерно благодарен за подробное описание.  
Страницы: 1
Читают тему (гостей: 1)
Наверх