Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для вставки формул - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для вставки формул (Макросы/Sub)
Макрос для вставки формул
argetlam Дата: Среда, 29.04.2015, 15:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Доброе время суток.
Я пытаюсь сделать макрос, который расставляет формулы для определенного массива начиная с последней пустой строки. Т.е. если в массиве будут новые данные, макрос должен суметь протянуть формулы и вставить их как значения. В оригинале это ВПР из огромного массива, формула убивается для экономии ресурсов.

Прошу помощи знатоков: возникает ошибка при выборе последней незаполненной ячейки, а если делать другим способом, то при втором цикле формула для строки 2 попадает в строку 10 (проще говоря она просто съезжает).
К сообщению приложен файл: 7165558.xls (52.0 Kb)
 
Ответить
СообщениеДоброе время суток.
Я пытаюсь сделать макрос, который расставляет формулы для определенного массива начиная с последней пустой строки. Т.е. если в массиве будут новые данные, макрос должен суметь протянуть формулы и вставить их как значения. В оригинале это ВПР из огромного массива, формула убивается для экономии ресурсов.

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

Автор - argetlam
Дата добавления - 29.04.2015 в 15:54
nilem Дата: Среда, 29.04.2015, 16:24 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
argetlam, привет
не очень понятно, что вам нужно. Возможно, вот это поможет
[vba]
Код
Sub формула_норм()
'диапазон от F2 до последней заполненннй ячейки по ст D
With Range("F2:F" & Cells(Rows.Count, 4).End(xlUp).Row)
     '=D2/E2
     .FormulaR1C1 = "=RC[-2]/RC[-1]"
     'формулы заменяем значениями
     .Value = .Value
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеargetlam, привет
не очень понятно, что вам нужно. Возможно, вот это поможет
[vba]
Код
Sub формула_норм()
'диапазон от F2 до последней заполненннй ячейки по ст D
With Range("F2:F" & Cells(Rows.Count, 4).End(xlUp).Row)
     '=D2/E2
     .FormulaR1C1 = "=RC[-2]/RC[-1]"
     'формулы заменяем значениями
     .Value = .Value
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 29.04.2015 в 16:24
Manyasha Дата: Среда, 29.04.2015, 16:31 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
argetlam, строчка в коде [vba]
Код
wsWS.Range("f1").End(xlDown).Offset(1, 0)
[/vba] работает также, как сочетание ctrl+shift+стрелка вниз. Попробуйте нажать их, выделив ячейку F1 - в Вашем исходном файле выделится не одна ячейка, а весь столбец F, сдвигать вниз его уже некуда, вот ошибка и вылетает.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеargetlam, строчка в коде [vba]
Код
wsWS.Range("f1").End(xlDown).Offset(1, 0)
[/vba] работает также, как сочетание ctrl+shift+стрелка вниз. Попробуйте нажать их, выделив ячейку F1 - в Вашем исходном файле выделится не одна ячейка, а весь столбец F, сдвигать вниз его уже некуда, вот ошибка и вылетает.

Автор - Manyasha
Дата добавления - 29.04.2015 в 16:31
argetlam Дата: Среда, 29.04.2015, 16:53 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
nilem, похоже, но не то, надо чтобы те данные которые один раз посчитал не пересчитывались при повторном запуске макроса.
Manyasha, вот это я баран... Спасибо! Стоило заменить Down на UP и range на ("f1000000"), и макрос начал работать как было задумано! Код конечно кривой, но работает))

Соврал, работает, но формула едет, подскажите, как от этого избавиться?
К сообщению приложен файл: 6007788.xls (54.5 Kb)


Сообщение отредактировал argetlam - Среда, 29.04.2015, 17:05
 
Ответить
Сообщениеnilem, похоже, но не то, надо чтобы те данные которые один раз посчитал не пересчитывались при повторном запуске макроса.
Manyasha, вот это я баран... Спасибо! Стоило заменить Down на UP и range на ("f1000000"), и макрос начал работать как было задумано! Код конечно кривой, но работает))

Соврал, работает, но формула едет, подскажите, как от этого избавиться?

Автор - argetlam
Дата добавления - 29.04.2015 в 16:53
argetlam Дата: Среда, 29.04.2015, 17:12 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 46
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Решение во вложении. Достаточно было заменить "=d2/f2" на "=RC[-2]/RC[-1]". Нуб он и есть нуб, но нуб находчивый!))

Всем спасибо за внимание.
К сообщению приложен файл: 3841561.xls (54.0 Kb)
 
Ответить
СообщениеРешение во вложении. Достаточно было заменить "=d2/f2" на "=RC[-2]/RC[-1]". Нуб он и есть нуб, но нуб находчивый!))

Всем спасибо за внимание.

Автор - argetlam
Дата добавления - 29.04.2015 в 17:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для вставки формул (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!