Страницы: 1
RSS
Вставка формулы макросом
 
Добрый день! Скажите можно ли скопировать формулу макросом в активную ячейку
чтобы она соответствовала строке? Например:

=F12*E12*(1+NDS)*(1-DISCOUNT3M) (формула находиться допустим на листе1 в ячейке "A1" ;)
нужно скопировать её в активную ячейку на другом листе допустим в ячейку "G19" Лист2 чтоб получилось:
=F19*E19*(1+NDS)*(1-DISCOUNT3M)

Либо сразу вставлять формулу из макроса.
 
Какое-то не соответствие :|
Код
     ActiveCell.FormulaR1C1 = "=RC6*RC5*(1+NDS)*(1-DISCOUNT3M)"
 
В который раз...))) Если уж макрос - зачем формула? Вычисляйте прямо в коде и вставляйте уже значение.
 
Требуется как раз получить не значение а ячейку с формулой, которая и будет уже выполнять свои действия.
 
Цитата
Александр.М пишет:
которая и будет уже выполнять свои действия.
... и вернёт значение )) Как хотите...
 
три раза перечитал.
так и не понял.
что за "соответствие"?
формула была "допустим в A1", ссылалась на ячейки из 12-й строки и на какие-то имена.
"допустим", скопировалась.
"допустим", в G19.
другого листа.
умгу...

что надо сделать с формулой, чтобы её искорёжить требуемым образом?
с какого перепугу исчезла имеющаяся разница в 11 строк и 4(5) столбцов?
и где у нас уверенность, что эти имена будут работать на другом листе?
имена вообще-то разные бывают - в том числе и имена уровня листов, именованные формулы, динамические диапазоны, да мало ли что ещё...

может, начнём с начала, а не с середины?
какую задачу решаем?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Ну просто значение останется значением в ячейке, а формула будет работать на листе, что собственно и требуется.
 
Александр.М, я думал Вы просто ошиблись в строках, но ikki уточнил, а Вы ему так и не ответили.
 
Т.е. если при изменении исходных данных для формулы макрос вместо этой формулы вставит значение в ячейку, то это плохо?
 
Что касается задачи: есть основная таблица, считает склад, представляет из себя большой список позиций и формул. Работает в скрытом режиме, все действия осуществляются с другого листа макросами и только мышью.
Пользуются программой несколько сотрудников, это максимально просто и не требует особых навыков.
Но иногда в таблицу необходимо внести новую позицию, что влечет за собой целый ряд действий, выполнение которых сотруднику занимающемуся иными вопросами не под силу. Задача, сделать так чтобы каждый сотрудник мог добавлять новые позиции легко и не принужденно.

Решение: жмем на кнопочку "добавить позицию" появляется лист (форма) с указаниями, кнопочками и обязательными полями, поля заполняются в соответствии с новой позицией,  артикул, название и тд
проставляются необходимые галочки, после чего нажимаем на ок.

Макрос в свою очередь выполняет выше указанный ряд действий в соответствии с формой.

В двух словах, надо макрасом в определенном месте таблицы создать новую строку и правильно заполнить
необходимые ячейки, так вот с ячейками в которых должна быть формула у меня и не выходит, не знаю
как вставить формулу с листа (формы) так чтобы она работала именно на той строке в которую её вставили.
 
спасибо за пояснения.
надеюсь, это не было столь уж сложно.

правда, намного легче не стало.
ок, оставим вопрос о том, зачем вообще в справочнике нужны именно формулы.
верю, что нужны.

но так и не понятно - зачем копировать формулы с листа формы?
они ж там "стандартные"?
имхо, проще так:
макросом добавили новую позицию в справочник.
часть столбцов - значения.
для столбцов с формулами пишем макросом формулу в нотации R1C1
для вашего примера будет так
Код
cells(i,7).formular1c1="=rc5*rc6*(1+NDS)*(1-DISCOUNT3M)"
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
гм...
как неожиданно обнаружилось только что, Николай писал то же самое ещё в посте #2.
чем не понравилось?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
формулы в таблице =F12*E12*(1+NDS)*(1-DISCOUNT3M)
макрос ставит =$F16*$E16*(1+NDS)*(1-DISCOUNT3M)

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

Еще проще, вот выделил я ячейку E2, выполнить макрос, макос вставил формулу в Е2: =B2+C2/D2
выделил я ячейку Е9, выполнить макрос, макос вставил формулу в Е9: =B9+C9/D9
тоесть в зависимости от номера строки
вот как то так возможно? причем макрос один и тот же.
 
Цитата
Александр.М пишет:
вот выделил я ячейку E2, выполнить макрос, макос вставил формулу в Е2:=B2+C2/D2
выделил я ячейку Е9, выполнить макрос, макос вставил формулу в Е9:=B9+C9/D9
тоесть в зависимости от номера строки
Вот без формул: выделяйте ячейки в жёлтом диапазоне.
 
Нужно еще на изменение влияющих ячеек.
 
Я просто показать, что можно и без формул выполнять требуемые вычисления)) А на влияющие - событие Change - согласен. Но автору всё равно нужны формулы))
 
Коллеги! Подскажите, где ошибка...
Вставляю формулу в макрос. Ругается: expected end of statement
Worksheets("ST").Cells(25, 5).Value = "=ТЕКСТ(Kolvo1;"00") & ":" & ТЕКСТ(Kolvo2;"00")"

где Kolvo1 и Kolvo2 - переменные с цифровым значением
Спасибо.
 
marussia, замените .Value на .FormulaLocal
---
ПС Не заметил двойные кавычки в формуле. Внутри строки двойные кавычки надо задваивать.
---
ПС2 Был не внимателен. Наверное так:
Код
Worksheets("ST").Cells(25, 5).FormulaLocal = "=ТЕКСТ(" & Kolvo1 & ";""00"") & "":"" & ТЕКСТ(" & Kolvo2 & ";""00"")"
Изменено: JayBhagavan - 16.09.2015 12:25:24

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Читают тему
Наверх