Добавить в корзинуПозвонить
Найти в Дзене
Макрос решает

Руководство по использованию формул в макросах Excel - 17

Поговорим о свойстве объекта диапазон Formula. Данное свойство позволяет устанавливать или возвращать формулу в определённую ячейку. Давайте продемонстрируем, как это работает. Во-первых, внесём в рабочий лист простую формулу, которая будет суммировать диапазон A1:C6. И эта формула будет находиться в ячейке C9. Формула обработала значения ячеек и вывела результат в ячейку C9. Обратите внимание, что, хотя мы видим результат в виде цифры, фактически в данной ячейке находится формула, которую мы можем увидеть в строке формул. Переходим в Visual Basic и создаём нашу процедуру, назовём её MyFormula и забьём следующий код: Range ("C9").Formula. Не забудем поставить MsgBox. Код готов. Жмём Run Macro, и программа выводит формулу, которую видим в строке формул. Таким образом, данное свойство позволяет возвращать формулу из ячейки. Хочу обратить внимание, что Excel выводит формулы на английском языке. Ничего страшного в этом нет. Единственное, вам нужно будет знать аналог русской формулы для а

Поговорим о свойстве объекта диапазон Formula. Данное свойство позволяет устанавливать или возвращать формулу в определённую ячейку. Давайте продемонстрируем, как это работает.

Во-первых, внесём в рабочий лист простую формулу, которая будет суммировать диапазон A1:C6. И эта формула будет находиться в ячейке C9. Формула обработала значения ячеек и вывела результат в ячейку C9.

-2

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

  • =СУММ(A1:C6)

Переходим в Visual Basic и создаём нашу процедуру, назовём её MyFormula и забьём следующий код: Range ("C9").Formula. Не забудем поставить MsgBox. Код готов. Жмём Run Macro, и программа выводит формулу, которую видим в строке формул. Таким образом, данное свойство позволяет возвращать формулу из ячейки.

  • Sub myFormula()
    MsgBox Range("C9").Formula
    End Sub
-3

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

  • =SUM(A1:C6)

Давайте теперь рассмотрим пример, где нам необходимо ввести формулу в ячейку. Нам нужно немного изменить код для этого. Удаляем MsgBox и вбиваем код на английском языке: Range("A1"). Удалим формулу из ячейки и жмём Run Macro.

-4

Программа ввела формулу в ячейку. Это нормальная формула, которая будет пересчитывать результат каждый раз, когда мы вносим изменения в диапазон ячеек A1. Например, сейчас я ещё раз вобью 20 в ячейки B4:B6 и C4 — программа пересчитала своё значение. Было 240, стало 320.

-5

Теперь, если вы хотите, чтобы в ячейке было значение, а не формула, которая каждый раз пересчитывается при изменении значений в диапазоне A1:C6, поступим следующим образом. Дополним процедуру командой

  • Range("C9") = Range("C9").Value.

Нам необходимо приравнять значение ячейки C9 к значению ячейки C9. Звучит странно, но это нормально в программировании.

  • Sub myFormula()
    Range("C9").Formula = "=SUM(A1:C6)"
    Range("C9") = Range("C9").Value
    End Sub

Давайте проверим, как работает код в режиме отладки. Жмём F8: сначала макрос вводит формулу в ячейку C9, затем присваивает значение ячейке C9, и теперь в ней находится число.

Ещё одна маленькая вещь как я уже говорил ранее нам нет необходимости писать Value. Потому что данное свойство установлено по умолчанию. Так что если я удалю Value, то код не потеряет свой функционал и будет работать так же как и прежде.

  • Sub myFormula()
    Range("C9").Formula = "=SUM(A1:C6)"
    Range("C9") = Range("C9")
    End Sub

Давайте проверим в режиме отладки. У нас появилась формула здесь так и у нас ячейка C9 приравнялась значению ячейки C9. Это звучит немного странно, но именно так это и работает. Поэтому когда я запуская данную строку она меняется на фактическое значение формулы.

Подписывайтесь на канал и пишите свои ожидания от изучения VBA в комментариях!