Создание макросов и пользовательских функций на VBA

Введение

Всем нам приходится - кому реже, кому чаще - повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую "рутинную составляющую" - одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос - это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP...), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно - редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис - Макрос - Редактор Visual Basic (Toos - Macro - Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)

    macro1.png:

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией  Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.png

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули - используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert - Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

    macro3.png

  • Модуль Эта книга - также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

    macro4.png

  • Модуль листа - доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа - команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

    macro5.png

 Обычный макрос, введенный в стандартный модуль выглядит примерно так:

macro6.png

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub - тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно...

Способ 2. Запись макросов макрорекордером

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

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу - запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись - ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) - во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше - выбрать в меню Сервис - Макрос - Начать запись (Tools - Macro - Record New Macro)
  • в Excel 2007 и новее - нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.png

  • Имя макроса - подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш - будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис - Макрос - Макросы - Выполнить (Tools - Macro - Macros - Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в... - здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга - макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга - макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов - это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или - в старых версиях Excel - через меню Сервис - Макрос - Макросы (Tools - Macro - Macros):

macro8.png

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

Создание кнопки для запуска макросов

Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис - Настройка (Tools - Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый "колобок" - Настраиваемую кнопку (Custom button):

macro9.gif

Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:

macro10.gif

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

macro11.png

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

macro12.png

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше - откройте панель инструментов Формы через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms)
  • В Excel 2007 и новее - откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

macro13.png

Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.

Создание пользовательских функций на VBA

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции:

macro14.png

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined):

macro15.png

После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

macro16.png


 

 

 


Страницы: 1  2  
18.05.2016 09:21:04
Доброго дня!! Не подскажете где в 2010офисе личная книга макросов??
28.07.2016 13:43:42
Добрый день!  Сделал целый комплекс но напоролся на проблему: на моем компе на котором я все делал работают все макросы отлично, на других компах все кнопки которые исполняют макросы записанные макрорекодером работают , все кнопки ActiveX не работают ни у кого кроме меня. Как решить данную проблему?
Офис 2007, макросы с макрорекодера в модулях сохранены в самом файле, макросы которые к кнопках актива в листах.
16.08.2016 17:45:12
Николай, добрый день!
Только начинаю знакомиться с VBA, могли бы вы рассказать, как все-таки подружить макросы с умными таблицами?
Если более конкретно, то интересует автосортировка, в диапазоне все работает, как только подключаешь умную таблицу, макрос теряется((
Как правильно задавать диапазон умной таблицы?

Спасибо!!
28.09.2016 12:40:11
В Excel 2010 пытался сделать пользовательскую функцию NDS как в примере выше. При вставке функции в ячейку через мастер функций пишет "У данной функции нет аргументов". Пытался прописать аргумент вручную - пишет ошибку #ИМЯ?. Убрал аргумент в описании функции - просто хотел вернуть число. Все равно та же ошибка #ИМЯ?. Функцию вставляет в формулу в виде =МояКнига.xlsm!Module1.NDS(). Не пойму, в чем проблема.

P.S.
Похоже, что проблема в файле (я не в новый файл, а в существующий пытался функцию прописать).
Попробовал на другом компьютере в новом файле - всё нормально работает... До поры. При следующем открытии опять косяки.
Добрый день, у меня такая же проблема! При попытке повторить пример в Excel 2010, вместо значения выходит ошибка  #ИМЯ? Плюс  в Мастер функций отражается не название функции, а целый адрес (подобный выше упомянутому =МояКнига.xlsm!Module1.NDS()).
Подскажите, пожалуйста, почему так происходит?
Заранее спасибо.
17.10.2016 10:31:33
Добрый день! я с макросами знакомлюсь пару дней) мне нужно написать формулу 0,0003*х^3-0.0262*x^2+1.8327*x. Но у меня почему то ошибку выдает. С более простыми формулами все получилось. Может быть Вы мне подскажите в чем дело)) заранее благодарю)
07.02.2017 21:55:12
Здравствуйте, подскажите пожалуйста есть ли какой-то каталог с командами для написания макроса. Никогда не сталкивался и понятия не имею какие правила и методы есть для написания макроса.
09.04.2017 19:05:50
Добрый день!
Подскажите, пожалуйста, как написать макрос, чтобы автоматически делал авто сумму с округлением до 2-х значений после запятой в одной ячейке, в следующей ячейке, нижней, выделял сумму НДС и в следующей ячейке, нижней, считал итог (сумма+НДС).
04.05.2017 16:19:36
Здравствуйте! Николай помогите пожалуйста у меня нет в списке "определенные пользователем". Откуда найти мне это?
04.05.2017 16:28:37
Все спасибо исправил
Здравствуйте, подскажите пожалуйста, как записать макрос пересчитывающий значение в столбце таблицы?
Добрый день, Николай!

Помогите написать макрос, сортирующий по возрастанию в строке числа в выделенных ячейках
22.07.2017 22:49:20
Вот бы ещё материалов по макросам)
10.11.2017 11:33:12
Добрый день, Николай!
После записи макроса NDS, в мастере функций не отобразилась новая категория "определенные пользователем". Подскажите что делать? Где искать?
23.11.2017 01:21:30
Здравствуйте, у меня вопрос неземной наверное)) приложу картинку чтоб понятнее было))  
23.02.2018 16:05:06
Добрый день.
подскажите, пожалуйста, как вставить несколько макросов на один и тот же лист?

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

спасибо  
04.03.2019 11:31:23
Здравствуйте Николай.
Подскажите как сделать макрос для создания ссылки в нижний правый колонтитул листа2 из ячейки A1 листа1.
08.03.2019 10:43:49
Добрый день! Очень интересные видеоуроки и статьи, спасибо! Решил попробовать макросы научиться писать, может подскажите какую-нибудь литературу (самоучитель) по этой теме для начинающих (очень-очень чайников).  
07.08.2019 13:53:12
Создал кнопки макросов на панели инструментов, переслал файл по почте и этих кнопки не обнаружились. Павел подскажите как их сохранить, чтобы при открытии на другой машине они были.
11.11.2019 14:00:21
Добрый день подскажите, как написать макрос чтобы текст который в одной ячейке, выбрал значение которые начинается с "(" и заканчивается ")", менял размер шрифта на 7
Пример : Я ушел с подругой на рынок (за помидорами), переименовало на Я ушел с подругой на рынок (за помидорами)
Подскажите сломал уже голову
16.01.2020 13:19:24
Здравствуйте, Николай!
Спасибо за интересные статьи. Я часто пользуюсь с функциями ИНДЕКС+ПОИСКПОЗ. Так как в VBA я не силен, можете пожалуйста подсказать, как создать пользовательскую функцию, объединяющую две вышеуказанные функции, для того чтобы облегчить/ускорить работу
24.09.2020 14:09:19
Добрый день!
Скажите пожалуйста как поступить в следующей ситуации.
Нужно книгу, использующую функции из отдельного файла, например, из личной книги макросов, положить в общую папку в локальной сети для открытия её на других компьютерах. Т.е. нужна обещая книга макросов с возможностью её редактирования независимо от рабочей книги (для дальнейшего совершенствования макросов).
17.04.2021 12:39:51
Николай, подскажите как изменился VBA в Excel/ Word от версии к версии.
Когда-то писал (и много) под MS-Office 2003.
Переписывать неохота, а пользоваться привык.
Особенно, когда результаты отчётов Excel отправляю в Word (стало криво)
02.08.2022 09:23:49
Николай, добрый день!
Вопрос следующий. Есть пользовательская функция и есть большой код. В определенный момент необходимо чтобы в выбранные ячейки вставлялась пользовательская функция, при этом с использованием переменных. Не подскажите как это сделать?
16.10.2022 08:02:55
Здравствуйте, Николай:) Практически все интернет-учителя по экселю и VBA говорят о том, что можно создать пользовательскую функцию взамен длинных и сложных формул в экселе, но в примерах показывают суммы, средние, очистки ячеек или вставки рассчитанных значений взамен формул. В общем все то, что в экселе возможно сделать нажатием одной двух клавиш и так...Не могу найти ни одной статьи или видео, где показывалось бы, как формулу с множеством функций и несколькими аргументами превращают в пользовательскую функцию VBA. Не жду, что Вы в ответе на комментарий расскажите все секреты))) Но...может в каком-то из Ваших платных онлайн-курсов есть подобная тема?( Прохожу Ваш курс Сводные таблицы от и до)
18.12.2023 15:41:33
Здравствуйте! Возможно ли с помощью макроса сделать форматирование столбцов, строк? Мне надо настроить ширину столбцов поменьше, высоту строк побольше. В умных таблицах слетают итоги после обновления Power Query. Хочу так, чтобы макрос обновлял данные, форматировал столбцы, строки, в умных таблицах выводил мне нужные итоги. Так возможно? Рекордером не получается.
29.02.2024 08:20:16
Всем приветь. Можно сделать этого формулы с макросом (Function)


=ОКРУГЛ(
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Seleks.seriş";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Tohummaýa";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Naýbaşy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1810;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Naýbaşy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";905;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Saýlantgy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1572;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Saýlantgy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";786;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-1";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1238;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-1";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";619;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-2";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1096;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-2";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";548;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-3";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1000;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-3";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";500;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Ätiýaç";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";858;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Ätiýaç";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";429;

ЕСЛИ(И(M1=50%;N1="Nah";P1="Seleks.seriş";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Tohummaýa";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Naýbaşy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1530;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Naýbaşy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";657;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Saýlantgy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1350;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Saýlantgy";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";579;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-1";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";1100;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-1";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";472;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-2";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";990;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-2";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";425;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-3";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";920;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-3";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";395;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Ätiýaç";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";820;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Ätiýaç";Q1="tüýjümekligi aýrylan";R1="(dermanlanan)";352;

ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Seleks.seriş";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Tohummaýa";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Naýbaşy";R1="(dermanlanan)";1456;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Naýbaşy";R1="(dermanlanan)";728;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Saýlantgy";R1="(dermanlanan)";1216;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Saýlantgy";R1="(dermanlanan)";608;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-1";R1="(dermanlanan)";878;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-1";R1="(dermanlanan)";439;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-2";R1="(dermanlanan)";732;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-2";R1="(dermanlanan)";366;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Arka-3";R1="(dermanlanan)";636;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Arka-3";R1="(dermanlanan)";318;
ЕСЛИ(И(M1=100%;N1="Ýüpek";P1="Ätiýaç";R1="(dermanlanan)";490;
ЕСЛИ(И(M1=50%;N1="Ýüpek";P1="Ätiýaç";R1="(dermanlanan)";245;

ЕСЛИ(И(M1=50%;N1="Nah";P1="Seleks.seriş";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Tohummaýa";R1="(dermanlanan)";420;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Naýbaşy";R1="(dermanlanan)";1210;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Naýbaşy";R1="(dermanlanan)";605;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Saýlantgy";R1="(dermanlanan)";1030;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Saýlantgy";R1="(dermanlanan)";515;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-1";R1="(dermanlanan)";780;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-1";R1="(dermanlanan)";390;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-2";R1="(dermanlanan)";672;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-2";R1="(dermanlanan)";336;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Arka-3";R1="(dermanlanan)";598;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Arka-3";R1="(dermanlanan)";299;
ЕСЛИ(И(M1=100%;N1="Nah";P1="Ätiýaç";R1="(dermanlanan)";490;
ЕСЛИ(И(M1=50%;N1="Nah";P1="Ätiýaç";R1="(dermanlanan)";245;

))))))))))))))))))))))))))))))))))))))))))))))))))))))));2)
Страницы: 1  2  
Наверх