Страницы: 1
RSS
Передать значение переменной в формулу VBA
 
Добрый день,
Столкнулся с проблемой
Имеется простой макрос который вставляет формулу в одну ячейку
Код
Range("G1").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[23]C)"

Как видим по формуле последнюю ячейку которую он захватывает это 23 строка таблицы R[23]C
Если строк в таблице станет больше то формула не охватит весь диапазон.
Как мне 23 заменить на посчитанной количество строк? (как посчитать еще тоже не знаю))

Нашел формулу которая делает аналогичное действие но там промеж.итоги стоят внизу столбца, а мне принципиально надо сверху(((
Код
.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).FormulaR1C1 = "=SUBTOTAL(9, R4C:R[-1]C)"
 
Так сработает?
"...[" & переменная & "]..."
 
Код
a = Cells(Rows.Count, 7).End(xlUp).Row
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[" & a - 1 & "]C)"
Изменено: Badamyan - 24.08.2016 15:37:12
 
Да сработало) Спасибо) пойду искать как этой переменной нужное значение передать))
 
Цитата
venom51 написал:
пойду искать как этой переменной нужное значение передать))
переменная = Cells(Rows.Count, 7).End(xlUp).Row
или же сверху
переменная = Cells(1, 7).End(xlDown).Row
 
Код
 Range("G1").Select
    R = Range("G2").End(xlDown).Row
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[" & R & "]C)"
нашел
почему то она вместо значения 23 выдает значение 24
 
Зачем вставлять формулу макросом, если макросом можно сумму посчитать?
Код
    Range("G1") = WorksheetFunction.Subtotal(109, Range("G2:G" & Cells(Rows.Count, 1).End(xlUp).Row))
 
Kuzmich
чтобы при фильтрации таблицы видеть промежуточные итоги по отфильтрованным данным) зачем бы я тогда вообще использовал промеж.итоги, можно было бы обычную сумму прописать)
 
Цитата
чтобы при фильтрации таблицы видеть промежуточные итоги по отфильтрованным данным
Вы видели, я написал в функции параметр 109
 
Видел и даже попробовал то что вы написали потестить.
Мне нужна в ячейке формула, а не значение)
Чтоб было яснее - есть некая выгрузка, которая каждый день вручную обрабатывалась - добавлялись столбцы, вставлялись простые формулы, фильтр и прочее.
Вот чтобы ее каждый день не лопатить решил сделать макрос.

Спасибо Badamyan 3 пост в данной теме закрыл вопрос целиком и полностью)
Изменено: venom51 - 24.08.2016 16:02:28
 
Цитата
venom51 написал:
Спасибо  Badamyan  3 пост в данной теме закрыл вопрос целиком и полностью)
а я уж думал что меня некто не видит ))))
 
Цитата
Вот чтобы ее каждый день не лопатить решил сделать макрос
В макросе можно установить фильтр и посчитать промежуточную сумму, зачем вставлять формулы
я не очень понимаю
 
Цитата
Kuzmich написал: зачем вставлять формулы
ну например чтобы каждый раз, если поменять данные, не запускать макрос
 
Цитата
если поменять данные, не запускать макрос
Макрос сделать на изменение определенных данных и ничего не надо нажимать, например.
 
а почему бы в 7-й колонке не написать:
Код
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;R[1]C:ИНДЕКС(C;СЧЁТЗ(C1)))
и перестать на этом париться с макросами, в которых не очень...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Игорь Гончаренко написал: а почему бы в 7-й колонке не написать
Потому что я хочу уйти от того чтобы каждый день вставлять формулы в новый файл, а вы меня к этому обратно возвращаете.

Цитата
Kuzmich написал: Макрос сделать на изменение определенных данных
Как вариант да, но предполагалось пройтись макросом по файлу всего 1 раз утром и больше не задействовать макросы в таблице.
Кстати изменение данных пользователем в данной таблице не предполагается, она чисто информационная, если только на изменение фильтра возможно повесить запуск макроса то это хорошая идея может быть, но опять же мне не нужно чтобы пользователи прибегали и спрашивали "Зачем Excel требует от меня включить макросы, там вирус?"  так что лучше обойтись.  
 
Цитата
спрашивали "Зачем Excel требует от меня включить макросы, там вирус?"  так что лучше обойтись
Так формулу-то вы вставляете все равно макросом, так что они должны быть разрешены.
 
Макросом я обрабатываю файл и выкладываю в общий доступ уже готовый файл без макросов)
макрос в PERSONAL.XLSB вообще лежит
Страницы: 1
Наверх