Как прописать формулу в макросе excel

На чтение 4 мин. Просмотров 33.2k.

Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.

Уровень мастерства: Средний

Автоматизировать написание формул

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

Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.

Совет № 1: Свойство Formula

Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.

Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:

  1. Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
  2. Строка формулы должна начинаться со знака равенства = после первой кавычки.

Вот простой пример формулы в макросе.

Sub Formula_Property()

  ' Формула представляет собой строку текста, заключенную в кавычки
  ' Начинается со знака =
  Range("B10").Formula = "=SUM(B4:B9)"

End Sub

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

Совет № 2: Используйте Macro Recorder

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

Create Formula VBA code with the Macro Recorder

Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.

  1. Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
  2. Введите формулу или отредактируйте существующую формулу.
  3. Нажмите Enter, чтобы ввести формулу.
  4. Код создается в макросе.

Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.

Sub Macro10()
' Используйте средство записи макросов для создания кода для сложных формул с
' специальны символы и относительные ссылки

  ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")"
    
End Sub

Совет № 3: Нотация формулы стиля R1C1

Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.

Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.

R1C1 обозначает строки и столбцы.

Относительные ссылки

Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.

Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.

Отрицательные числа идут вверх по строкам и столбцам слева.

Положительные числа идут вниз по строкам и столбцам справа.

Абсолютные ссылки

Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.

Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1

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

Проще всего использовать макро-рекордер, чтобы понять это.

Свойство FormulaR1C1 и свойство формулы

Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.

Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.

Если ваша электронная таблица изменяется в зависимости от
условий вне вашего контроля, таких как новые столбцы или строки данных,
импортируемые из источника данных, то относительные ссылки и нотация стиля
R1C1, вероятно, будут наилучшими.

Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.

Вставка формулы со ссылками в стиле A1 и R1C1 в ячейку (диапазон) из кода VBA Excel. Свойства Range.FormulaLocal и Range.FormulaR1C1Local.

Свойство Range.FormulaLocal

FormulaLocal — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле A1.

В качестве примера будем использовать диапазон A1:E10, заполненный числами, которые необходимо сложить построчно и результат отобразить в столбце F:

Примеры вставки формул суммирования в ячейку F1:

Range(«F1»).FormulaLocal = «=СУММ(A1:E1)»

Range(«F1»).FormulaLocal = «=СУММ(A1;B1;C1;D1;E1)»

Пример вставки формул суммирования со ссылками в стиле A1 в диапазон F1:F10:

Sub Primer1()

Dim i As Byte

    For i = 1 To 10

        Range(«F» & i).FormulaLocal = «=СУММ(A» & i & «:E» & i & «)»

    Next

End Sub

В этой статье я не рассматриваю свойство Range.Formula, но если вы решите его применить для вставки формулы в ячейку, используйте англоязычные функции, а в качестве разделителей аргументов — запятые (,) вместо точек с запятой (;):

Range(«F1»).Formula = «=SUM(A1,B1,C1,D1,E1)»

После вставки формула автоматически преобразуется в локальную (на языке пользователя).

Свойство Range.FormulaR1C1Local

FormulaR1C1Local — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле R1C1.

Формулы со ссылками в стиле R1C1 можно вставлять в ячейки рабочей книги Excel, в которой по умолчанию установлены ссылки в стиле A1. Вставленные ссылки в стиле R1C1 будут автоматически преобразованы в ссылки в стиле A1.

Примеры вставки формул суммирования со ссылками в стиле R1C1 в ячейку F1 (для той же таблицы):

‘Абсолютные ссылки в стиле R1C1:

Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1:R1C5)»

Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1;R1C2;R1C3;R1C4;R1C5)»

‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам:

Range(«F1»).FormulaR1C1Local = «=СУММ(RC1:RC5)»

Range(«F1»).FormulaR1C1Local = «=СУММ(RC1;RC2;RC3;RC4;RC5)»

‘Относительные ссылки в стиле R1C1:

Range(«F1»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])»

Range(«F2»).FormulaR1C1Local = «=СУММ(RC[-5];RC[-4];RC[-3];RC[-2];RC[-1])»

Пример вставки формул суммирования со ссылками в стиле R1C1 в диапазон F1:F10:

‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам:

Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC1:RC5)»

‘Относительные ссылки в стиле R1C1:

Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])»

Так как формулы с относительными ссылками и относительными по строкам ссылками в стиле R1C1 для всех ячеек столбца F одинаковы, их можно вставить сразу, без использования цикла, во весь диапазон.


Get a formula from a cell using VBA in Excel.

This method returns the actual formula instead of the output value.

Get the Formula of a Cell into a Macro

We use the Formula property for this.

To get the formula in cell A1, type this in a macro:

Range("A1").Formula

5f4c85a8b3d434417958fa3c838b85a7.jpg

I will put MsgBox in front of this line of code so we can see the output in Excel:

MsgBox Range("A1").Formula

Go back to Excel and run it on a cell that has a date and this is the result:

9fd379c46222835b5be956c846f42cc6.jpg

In cell A1, you can see the actual visible output, which is the date, and in the message box pop-up you can see the formula that was used to create the output.

Using Formula in VBA means that the macro will get the formula that we see in the message box.

Notes

This is pretty straightforward, if you want to get the value of a cell that is easy and you can read about it in the link.

Download the attached workbook to see this example in Excel.


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Get Text from Comments in Excel Including the Author of the Comment — UDF

Macro: Output all text from a cell comment, including comment author, with this UDF in Excel. Thi…

Loop through a Range of Cells in Excel VBA/Macros

Tutorial: How to use VBA/Macros to iterate through each cell in a range, either a row, a column, or …

Limit the Total Amount a User Can Enter into a Range of Cells in Excel

Tutorial: How to limit the amount that a user can enter into a range of cells in Excel.  This works…

Me Keyword in Excel Macros & VBA

Tutorial: The Me keyword in Excel VBA allows you to refer to either the current worksheet, workbook,…

Select Ranges of Cells in Excel using Macros and VBA

Tutorial: This Excel VBA tutorial focuses specifically on selecting ranges of cells in Excel.  This…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons

50+ Hours of Video

200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

 

андрей тетерин

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

#1

10.05.2013 18:32:53

Добрый день, уважаемые гуру! Прошу вашей помощи!

Есть таблица, по мере заполнения которой нужно вставлять из кода VBA в некоторые ячейки формулы.
особенность формул такова, что часть данных берется с текущего листа (PEE), а часть из другого (Данные)
Адреса ячеек в формулах то же надо как то менять, таблица то растет…
При выполнении процедуры возникает ошибка выполнения — мне кажется она связана с адресами ячеек.
Мне кажется нужно как то подменить адреса в формуле на переменные.. ну или я не знаю.. второй день лопачу интернет — похожего не вижу.
Прошу помощи!
использую Excel 2010

Код
Private Sub InsertFormula()
    With Sheets("PEE")
    .Cells(ActiveCell.Row, 4).Formula = "=ЕСЛИ(ЕОШИБКА(ВПР(B130;Данные!A:B;2;ЛОЖЬ));"";ВПР(B130;Данные!A:B;2;ЛОЖЬ))" 'для столбца  D
    .Cells(ActiveCell.Row, 8).Formula = "=ЕСЛИ(ЕОШИБКА(ВПР(D130;Данные!B:C;2;ЛОЖЬ));"";ВПР(D130;Данные!B:C;2;ЛОЖЬ))" 'для столбца H
    .Cells(ActiveCell.Row, 12).Formula = "ЕСЛИ(ЕОШИБКА(I130/(H130*0,82));"";I130/(H130*0,82))"                       'для столбца L
    End With
End Sub

Желаемый результат — вставка формулы в ячейку с учетом следующего правила: в функции ВПР адрес искомой ячейки — строка относительная столбец абсолютный

Прикрепленные файлы

  • файл.rar (59.54 КБ)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Если макросы разрешены — нужна ли формула?

 

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

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Вместо Formula — FormulaLocal

К тому же кавычки — «» — необходимо делать двойными. В там виде как у Вас рекордер не воспримет их, т.к. они являются еще и служебным символом, означающим текст.

Хотя самый оптимальный и универсальный способ перенести формулу с листа в макрос — начать запись макроса, выделить ячейку с формулой, нажать F2, затем Enter. Остановить запись. Посмотреть, что записал рекордер.
Поверьте — и проще и всегда работать будет.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#5

10.05.2013 18:51:29

Код
.Cells(ActiveCell.Row, 4).FormulaR1C1 = "=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));"";ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))" 'для столбца  D

остальное аналогично.

пс. в Excel 2007-2013 можно использовать функцию ЕСЛИОШИБКА — и короче, и повторных вычислений не требует. но с 2003 и старше несовместима.

ппс. упс, на русские функции и кавычки я внимания не обратил.  :(  
The Prist прав.
тогда так:

Код
.Cells(ActiveCell.Row, 4).FormulaR1C1Local = "=ЕСЛИ(ЕОШИБКА(ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ)),"""",ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ))" 'для столбца  D

Изменено: ikki10.05.2013 19:02:43

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

LightZ

Пользователь

Сообщений: 1748
Регистрация: 22.12.2012

#6

10.05.2013 19:13:01

Саш, а ты тестил?
У меня так не работает.

Вариант

Код
Cells(ActiveCell.Row, 4).FormulaLocal = "=ЕСЛИ(ЕОШИБКА(ВПР(B130;Данные!A:B;2;ЛОЖЬ));"""";ВПР(B130;Данные!A:B;2;ЛОЖЬ))"

Изменено: LightZ10.05.2013 19:14:03

Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

не тестил.
но с подачи Дмитрия я уже поправил точку с запятой на запятую.

потестил.
оказывается, для FormulaR1C1 нужны разделители запятые
а для FormulaR1C1Local — точка с запятой.

Изменено: ikki10.05.2013 19:25:09

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

LightZ, насколько я понял, автору темы нужна именно завязка на относительность строки.
а так, как у него и как у тебя — всегда берется строка с номером 130.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

LightZ

Пользователь

Сообщений: 1748
Регистрация: 22.12.2012

#9

10.05.2013 19:27:32

А, точно :)
ну, тогда по идее нужно так (FormulaR1C1):

Код
Cells(ActiveCell.Row, 4).FormulaR1C1 = "=ЕСЛИ(ЕОШИБКА(ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ)),"""",ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ))"

Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

у меня такой вариант дает ошибку #имя?
если FormulaR1C1, то надо использовать английские имена функций: IF, ISERROR, VLOOKUP

Изменено: ikki10.05.2013 19:32:36

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

LightZ

Пользователь

Сообщений: 1748
Регистрация: 22.12.2012

Вариант с FormulaR1C1Local — хоть убей, но ошибка vba 1004
Вариант с FormulaR1C1 — у меня работает нормально, нужно просто ЛОЖЬ заменить на 0 и повторно активировать формулу :)
С русскими названиями формул тоже работает, может это зависит от локали офиса?

Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

при «повторно активировать» — ясен перец, заработает.
но, имхо, это неспортивно  :)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

LightZ

Пользователь

Сообщений: 1748
Регистрация: 22.12.2012

Ок, давай тогда найдём универсальный вариант :)

Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#14

10.05.2013 20:07:28

Цитата
vikttur пишет:
Если макросы разрешены — нужна ли формула?
Цитата
андрей тетерин пишет:
поверьте — нужны! таблицу заполняют люди очень далекие от макросов.. в то же время для последующего анализа данные должны быть максимально унифицированы.

А этим людям что — нужно писать макросы? Они будут ими ПОЛЬЗОВАТЬСЯ. А Вы полагаете, что макросы не умеют работать с «максимально унифицированным данными»?

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

имхо, через FormulaR1C1 (с использованием английских функций) — лучше всего.
и от локали не зависит.
а то мало ли — попадёт такой макрос на англоязычный Excel — и пиши пропало  :)

Изменено: ikki10.05.2013 20:09:42

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

LightZ

Пользователь

Сообщений: 1748
Регистрация: 22.12.2012

#16

10.05.2013 20:12:44

вот так работает:

Код
FormulaR1C1Local = "=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));"""";ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))"

и так:

Код
FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC2,Данные!C1:C2,2,FALSE)),"""",VLOOKUP(RC2,Данные!C1:C2,2,FALSE))"

Изменено: LightZ10.05.2013 20:43:06

Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?

 

Спасибо, уважаемые! низкий поклон LightZ, ikki, отдельное спасибо The_Prist, и vikttur, Вопрос решен. Тема закрыта

 

андрей тетерин

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

#18

10.05.2013 21:45:10

и да… вот рабочий код который сделан с помощь гуру. это для тех кто столкнется с таким вопросом:

Код
'Процедура вставки формул
Private Sub InsertFormula()
With Sheets("PEE")
        .Cells(ActiveCell.Row, 4).FormulaR1C1Local = "=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));"""";ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))" 'для столбца D
        .Cells(ActiveCell.Row, 8).FormulaR1C1Local = "=ЕСЛИ(ЕОШИБКА(ВПР(RC4;Данные!C2:C3;2;ЛОЖЬ));"""";ВПР(RC4;Данные!C2:C3;2;ЛОЖЬ))" 'для столбца Н
        .Cells(ActiveCell.Row, 12).FormulaR1C1Local = "=ЕСЛИ(ЕОШИБКА(RC9/(RC8*0,82));"""";RC9/(RC8*0,82))"                                                       'для столбца L
    End With
End Sub
 

DSH

Пользователь

Сообщений: 76
Регистрация: 01.01.1970

#19

10.04.2014 22:06:41

Поясните пожалуйста. Вроде указываю диапазон для вставки.

Я делал раньше так

Код
Range(Cells(60,41).select
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC4,Лист3!R5C1:R496C23,7,0),0)"
   Selection.Copy
    Range(Cells(60, 41), Cells(410, 41)).Paste

Но хотелось бы более культурнее сделать код

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#20

10.04.2014 22:16:34

DSH,

Код
Range(Cells(60, 41), Cells(410, 41)).FormulaR1C1 = "=IFERROR(VLOOKUP(RC4,Лист3!R5C1:R496C23,7,0),0)"
 

DSH

Пользователь

Сообщений: 76
Регистрация: 01.01.1970

Казанский, Спасибо большое за помощь. Я понял суть.

Изменено: DSH10.04.2014 22:36:06

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#22

10.04.2014 22:36:07

В следствии изменения предыдущего сообщения, смысл ответа утерян.

Изменено: RAN10.04.2014 23:40:00

Вставить формулу на лист средствами VBA

​Смотрите также​​ .Range(«A2»).Formula = «=B1+B2″​А вот можно​ ‘здесь ошибка, поэтому​
​ функции идут через​ мне надо складывать​ объединенных ячеек в​ 11).Select Cells(NextRow, 11).FormulaLocal​ вставки.​
​ поклон​ людям что -​Вариант с FormulaR1C1​ именно завязка на​тогда так:​ — начать запись​
​ формула?​ на переменные.. ну​андрей тетерин​ End With End​ ли сразу вставить​
​ «=» перед «КОРРЕЛ»​ запятую, при этом​ разорванные диапазоны, так​ шапке​ = ….и далее​
​Я делал раньше​LightZ, ikki,​ нужно писать макросы?​ — у меня​ относительность строки.​.Cells(ActiveCell.Row, 4).FormulaR1C1Local =​ макроса, выделить ячейку​андрей тетерин​
​ или я не​
​: Добрый день, уважаемые​
​ Subтак? проверьте пожалуйста.​ формулу в ячейку,​ заменил на «@»​ при вставке в​ что замена на​Igor_Tr​ нужна формула считающая​ так​отдельное спасибо​ Они будут ими​
​ работает нормально, нужно​а так, как​ «=ЕСЛИ(ЕОШИБКА(ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ)),»»»»,ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ))» ‘для столбца​ с формулой, нажать​: поверьте — нужны!​ знаю.. второй день​ гуру! Прошу вашей​Ципихович Эндрю​

​ чтобы обойтись без​​ Cells(i, j +​ ячейку формула автоматом​ двоеточие не подходит.​

​: Если без обьединения​​ среднее значение.​Range(Cells(60,41).select ActiveCell.FormulaR1C1 =​The_Prist,​ ПОЛЬЗОВАТЬСЯ. А Вы​ просто ЛОЖЬ заменить​ у него и​ D​ F2, затем Enter.​ таблицу заполняют люди​

​ лопачу интернет -​​ помощи!​: двоточие зачем и​
​ этих трюков с​ 15) = «@КОРРЕЛ(D»​ переходит на региональные​Roman777​ никак (чужой документ),​т.е. он находит​ «=IFERROR(VLOOKUP(RC4,Лист3!R5C1:R496C23,7,0),0)» Selection.Copy Range(Cells(60,​и​ полагаете, что макросы​ на 0 и​
​ как у тебя​LightZ​ Остановить запись. Посмотреть,​ очень далекие от​ похожего не вижу.​Есть таблица, по​ суть этой строки??​ автозаменой?​ & j &​ настройки (в русском​
​:​ можно определиться с​ пустую ячейку, в​

​ 41), Cells(410, 41)).PasteНо​​vikttur,​ не умеют работать​ повторно активировать формулу​
​ — всегда берется​
​: Саш, а ты​ что записал рекордер.​ макросов.. в то​Прошу помощи!​ мере заполнения которой​kai1337​Hugo121​ «:O» & j​
​ разделитель «;»). Как​superpsih​ диапазоном и записать​ данном случае К3​:(
​ хотелось бы более​​Вопрос решен.​
​ с «максимально унифицированным​
​С русскими названиями​ строка с номером​ тестил?​

​Поверьте — и​​ же время для​использую Excel 2010​
​ нужно вставлять из​: Ципихович Эндрю, Исправьте​
​: .formulalocal=​
​ & «;D» &​ вариант можно писать​

​, попробуйте поменять на​​ где то так:​
​ и вписывает в​ культурнее сделать код​Тема закрыта​ данными»?​
​ формул тоже работает,​
​ 130.​У меня так​
​ проще и всегда​ последующего анализа данные​Private Sub InsertFormula()​

​ кода VBA в​​ пожалуйста как надо​​Или пишите на​​ i & «:O»​ Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub b()​ «, «​Cells(NextRow, 11).value=Application.WorksheetFunction.Average(mRng). Должно​
​ нее формулу =СРЗНАЧ(F3:J3)​Казанский​андрей тетерин​ikki​ может это зависит​LightZ​

​ не работает.​​ работать будет.​:)
​ должны быть максимально​ With Sheets(«PEE») .Cells(ActiveCell.Row,​ некоторые ячейки формулы.​
​ , спасибо заранее)))​ английском.​

​ & i &​​ActiveCell.FormulaR1C1Local = «=СУММ(RC[-31];RC[-30])»​superpsih​ работать.​
​макрос срабатывает по​​: DSH,​​: и да… вот​: имхо, через​ от локали офиса?​

​: А, точно​​Вариант​ikki​ унифицированы. Поэтому и​ 4).Formula = «=ЕСЛИ(ЕОШИБКА(ВПР(B130;Данные!A:B;2;ЛОЖЬ));»»;ВПР(B130;Данные!A:B;2;ЛОЖЬ))»​
​особенность формул такова,​Busine2009​ДмитрийVBA​ «)» ‘после исполнения​End Sub​: Хм, заработало и​:)
​KoGG​ нажатию кнопки. при​Range(Cells(60, 41), Cells(410,​ рабочий код который​

​FormulaR1C1​​ikki​ну, тогда по​Cells(ActiveCell.Row, 4).FormulaLocal =​
​: .Cells(ActiveCell.Row, 4).FormulaR1C1 =​ возникло такое решение.​:)

​ ‘для столбца D​​ что часть данных​: если работает, значит​:)

​:​​ макроса замена «@»​
​ДмитрийVBA​ в формуле «,»​: Оптимальнее использовать FormulaR1C1​ следующем нажатии должен​ 41)).FormulaR1C1 = «=IFERROR(VLOOKUP(RC4,Лист3!R5C1:R496C23,7,0),0)»​ сделан с помощь​(с использованием​: при «повторно активировать»​ идее нужно так​ «=ЕСЛИ(ЕОШИБКА(ВПР(B130;Данные!A:B;2;ЛОЖЬ));»»»»;ВПР(B130;Данные!A:B;2;ЛОЖЬ))»​ «=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));»»;ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))» ‘для столбца​The_Prist​ .Cells(ActiveCell.Row, 8).Formula =​ берется с текущего​ так.​Не по теме:​

​ на «=» Next​​: Надо было сделать​​ меняется автоматически на​​Cells(NextRow, 11).FormulaR1C1 =​​ записать в ячейку​​DSH​ гуру. это для​
​английских​ — ясен перец,​
​ (FormulaR1C1):​ikki​ D​: Вместо Formula -​ «=ЕСЛИ(ЕОШИБКА(ВПР(D130;Данные!B:C;2;ЛОЖЬ));»»;ВПР(D130;Данные!B:C;2;ЛОЖЬ))» ‘для столбца​:)

​ листа (PEE), а​​Ципихович Эндрю​
​как у Вас все​
​ j Next i​
​ массовую вставку формулы​

​ «;». Колдунство какое-то​​ «=AVERAGE(RC6:RC10)»​ К4 формулу​​: Казанский, Спасибо большое​​ тех кто столкнется​​функций) — лучше​​ заработает.​​Cells(ActiveCell.Row, 4).FormulaR1C1 =​​: не тестил.​​остальное аналогично.​

​ FormulaLocal​​ H .Cells(ActiveCell.Row, 12).Formula​ часть из другого​: как я могу​ в голову помещается..?​ ‘здесь попробовал записать​ корреляции, которые просто​
​ :). Спасибо!​superpsih​=СРЗНАЧ(F4:J4) итд​ за помощь. Я​ с таким вопросом:​ всего.​но, имхо, это​ «=ЕСЛИ(ЕОШИБКА(ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ)),»»»»,ВПР(RC2,Данные!C1:C2,2,ЛОЖЬ))»​но с подачи​пс. в Excel​К тому же​

​ = «ЕСЛИ(ЕОШИБКА(I130/(H130*0,82));»»;I130/(H130*0,82))» ‘для​​ (Данные)​ исправить если не​ =/​
​ макрос, но не​ так не протянуть,​
​Roman777​: Помогите, пожалуйста, разобраться.​Все имена заняты​ понял суть.​’Процедура вставки формул​

​и от локали​​ неспортивно​
​ikki​ Дмитрия я уже​

​ 2007-2013 можно использовать​​ кавычки — «»​ столбца L End​Адреса ячеек в​

​ знаю её сути,​​Hugo121​ понял как вставить​ поэтому написал код:​

planetaexcel.ru

Excel 2007: записать формулу в ячейку

​:​​Вставляю формулу в​
​: Такой вариант​RAN​ Private Sub InsertFormula()​ не зависит.​
​LightZ​
​: у меня такой​ поправил точку с​ функцию ЕСЛИОШИБКА -​ — необходимо делать​ With End Sub​ формулах то же​
​ зачем она задумана​:​ это в цикл,​Sub find_corr() For​superpsih​
​ ячейку следующим образом:​NextRow = Range(«K65536»).End(xlUp).Row​: В следствии изменения​ With Sheets(«PEE») .Cells(ActiveCell.Row,​а то мало​
​: Ок, давай тогда​

​ вариант дает ошибку​​ запятой на запятую.​
​ и короче, и​ двойными. В там​Желаемый результат -​ надо как то​но думаю, что​Не по теме:​

​ поэтому пошел сложным​​ i = 2​

​, сам не пойму​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub temp()​

​ + 1 Cells(NextRow,​​ предыдущего сообщения, смысл​ 4).FormulaR1C1Local = «=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));»»»»;ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))»​ ли — попадёт​

​ найдём универсальный вариант​​ #имя?​потестил.​ повторных вычислений не​ виде как у​ вставка формулы в​
​ менять, таблица то​ кавычки и :​

​давно тут сидим…​​ путем :( ‘For​
​ To 240 For​ сей феномен… но​

CyberForum.ru

Вставка формулы в ячейку (Макросы/Sub)

​Cells(2, 35).FormulaR1C1 =​​ 11).FormulaLocal = «=ÑÐÇÍÀ×(F»​
​ ответа утерян.​ ‘для столбца D​
​ такой макрос на​
​Юрий М​если​
​оказывается, для FormulaR1C1​

​ требует. но с​ Вас рекордер не​ ячейку с учетом​ растет…​ не нужны​да и не​ i = 1​ j = 2​ тоже сталкивался…)​ «=SUM(RC[-31];RC[-30])»​ & NextRow &​

​Igor__​​ .Cells(ActiveCell.Row, 8).FormulaR1C1Local =​​ англоязычный Excel -​​: Цитатаандрей тетерин пишет:​FormulaR1C1​

​ нужны разделители запятые​​ 2003 и старше​ воспримет их, т.к.​ следующего правила: в​При выполнении процедуры​kai1337​

​ сложно это -​​ To 1000 ‘​​ To 240 ‘Cells(i,​​buchlotnik​End Sub​ «:J» & NextRow​

​: доброго времени суток!​​ «=ЕСЛИ(ЕОШИБКА(ВПР(RC4;Данные!C2:C3;2;ЛОЖЬ));»»»»;ВПР(RC4;Данные!C2:C3;2;ЛОЖЬ))» ‘для столбца​ и пиши пропало​поверьте — нужны!​​, то надо использовать​​а для FormulaR1C1Local​ несовместима.​ они являются еще​ функции ВПР адрес​ возникает ошибка выполнения​: Вообще цель работы​ теперь и Вы​ Range(«Q3»).Select ‘ ActiveCell.FormulaR1C1​ j + 15)​: это не колдунство,​Выдаёт ошибку. В​ & «)»​
​друзья, каким образом​
​ Н .Cells(ActiveCell.Row, 12).FormulaR1C1Local​

excelworld.ru

Вставка формулы в ячейку через макрос

​LightZ​​ таблицу заполняют люди​ английские имена функций:​ — точка с​ппс. упс, на​ и служебным символом,​
​ искомой ячейки -​ — мне кажется​ : Изучение МАРКОРЕКОРДЕРА​ это запомнили :)​ = «=CORREL(R2C4:R2C15,RC[-13]:RC[-2])» End​ = «=КОРРЕЛ(D» &​ если хотите задавать​ чём может быть​Igor__​ можно записать в​ = «=ЕСЛИ(ЕОШИБКА(RC9/(RC8*0,82));»»»»;RC9/(RC8*0,82))» ‘для​: вот так работает:​ очень далекие от​ IF, ISERROR, VLOOKUP​ запятой.​ русские функции и​ означающим текст.​ строка относительная столбец​ она связана с​ VBA.​kai1337​ SubВ комментариях в​ j & «:O»​ формулу через​ проблема? Причём проблема​: не срабатывает​ ячейку формулу с​ столбца L End​FormulaR1C1Local = «=ЕСЛИ(ЕОШИБКА(ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ));»»»»;ВПР(RC2;Данные!C1:C2;2;ЛОЖЬ))»​ макросов.. в то​LightZ​ikki​ кавычки я внимания​Хотя самый оптимальный​ абсолютный​ адресами ячеек.​Сервис(tools)макрос(Macro)Начать запись(Record New​: Private Sub A1B1B2()​ коде есть пояснения.​ & j &​200?’200px’:»+(this.scrollHeight+5)+’px’);»>.FormulaR1C1​
​ в знаке «;».​Все имена заняты​ помощью макроса.​ With End Sub​и так:​ же время для​

​: Вариант с FormulaR1C1Local​​:​
​ не обратил.​ и универсальный способ​

​vikttur​​Мне кажется нужно​

​ Macro)​

​ With Worksheets(«Лист1») .Range(«B1»)​ Задача, конечно, решена,​ «;D» & i​

​, необходимо использовать​​ Если его заменить​

​: …​

​вот часть кода​
​DSH​FormulaR1C1 = «=IF(ISERROR(VLOOKUP(RC2,Данные!C1:C2,2,FALSE)),»»»»,VLOOKUP(RC2,Данные!C1:C2,2,FALSE))»​ последующего анализа данные​ — хоть убей,​

CyberForum.ru

Макрос, вставляющий формулу в ячейку

​LightZ​​The Prist​ перенести формулу с​: Если макросы разрешены​ как то подменить​Запись макроса (Record​ = «1» .Range(«B2»)​ но это как-то​

​ & «:O» &​​ стандарты оригинала, а​ на «:», то​

​Igor__​​NextRow = Range(«K65536»).End(xlUp).Row​: Поясните пожалуйста. Вроде​андрей тетерин​

​ должны быть максимально​​ но ошибка vba​, насколько я понял,​

​прав.​​ листа в макрос​ — нужна ли​ адреса в формуле​ Macro)​
​ = «2» .Range(«A1»)=»B1+B2:»​ неправильно..​ i & «)»​

​ в английском аргументы​​ всё работает, но​: не работало из-за​ + 1 Cells(NextRow,​
​ указываю диапазон для​: Спасибо, уважаемые! низкий​
​ унифицированы. А этим​ 1004​

CyberForum.ru

​ автору темы нужна​

Понравилась статья? Поделить с друзьями:
  • Как прописать формулу в excel расчет процентов
  • Как прописать формулу в excel чтобы прибавить проценты
  • Как прописать формулу в excel процент от числа
  • Как прописать формулу в excel сумма строк
  • Как прописать формулу в excel сумма столбца