Шаг 389.
VBA в MSExcel. Модель прогнозирования денежных потоков... . Заполнение платежного календаря суммами ежедневных оборотов денежных средств
На этом шаге мы рассмотрим алгоритм заполнения платежного календаря.
Подпрограмма ЗаполнениеПлатежногоКалендаряПоДатам (рисунок 1) состоит из трех составляющих:
- подпрограммы ФормулыЗаполненияПлатежногоКалендаря непосредственно для ввода формул, производящих расчет;
- цикла For-Next для последовательного ввода рассчитанных ежедневных оборотов ДС по каждой статье в платежный календарь;
- очистки содержимого области с введенными формулами промежуточных расчетов.
Рис.1. Подпрограмма ЗаполнениеПлатежногоКалендаряПоДатам
Критериями при выборе данных служат:
- номер месяца, введенный в ячейку D2 перед началом вычислений;
- номер дня выбранного месяца, вводимого циклом For-Next с помощью переменной X в ячейку ВА1, и,
при выполнении подпрограммы, изменяющего значение от 1 до31;
- наименование статьи управленческого учета, сформированных ранее в платежном календаре в диапазоне ячеек С12:С79.
Формулы расчета ежедневных оборотов денежных средств
Для ввода формул определения ежедневных оборотов денежных средств запишите макрос ФормулыЗаполненияПлатежногоКалендаря,
предварительно введя следующие формулы. В ячейке ВА10 формула:
=ЕСЛИ(МЕСЯЦ(ИсхДанные!D10)=$D$2;
ЕСЛИ(ДЕНЬ(ИсхДанные!D10)=$BA$1;ИсхДанные!C10;0);0)
которая сначала определяет, соответствует ли номер месяца в дате, находящейся в ячейке
D10 рабочего листа
ИсхДанные номеру
месяца, введенному в ячейку
D2 рабочего листа ПК. При выполнении этого условия проверяется следующее условие: соответствует ли номер
дня месяца этой даты номеру дня месяца, вводимого в ячейку
ВА1 рабочего листа ПК. При выполнении этих условий формула возвращает
наименование проводимой операции, введенной в ячейку
D10 рабочего листа
ИсхДанные. В противном случае формула возвращает значение 0.
Формула в ячейке ВВ10:
=ЕСЛИ(BA10=0;0;СУММ(ИсхДанные!I10:J10))
проверяет результат вычисления формулы в ячейке
ВА10. Если результат не равен нулю, то формула суммирует значение поступления и
списания денежных средств по этой операции, содержащихся в ячейках
I10:J10 рабочего листа
ИсхДанные. Суммирование
значений доходных и расходных статей объясняется тем, что в ячейках
I10:J10 значения одновременно содержаться не могут. Это должно
обязательно учитываться при формировании таблицы на листе
ИсхДанные, ведь иначе такая запись не будет иметь никакого смысла.
Формула в ячейке ВС12:
=СУММЕСЛИ($BA$10:$BA$5000;$C12;$BB$10:$BB$5000)
суммирует обороты движения денежных средств в области ячеек
ВВ10:ВВ5000 за номер дня месяца, введенного в ячейку
ВА1 и при
условии, что текст наименования статьи в ячейке
С12 идентичен тексту наименования статьи в области ячеек
ВА10:ВА5000.
Запись макроса заключается в последовательном вводе этих формул в диапазоны ячеек BC12:BC79, ВА10:ВА5000 и ВВ10:ВВ5000.
Рис.2. Подпрограмма ввода формул определения оборотов за день по каждой статье управленческого учета
Цикл заполнения платежного календаря ежедневными оборотами движения денежных средств
Основным элементом автоматического заполнения платежного календаря ежедневными оборотами ДДС является цикл For-Next. Последовательность
выполняемых циклом операций в подпрограмме ЗаполнениеПлатежногоКалендаряПоДатам (рисунок 1) следующая:
- предварительно переменной Row (номер строки) присваивается значение 12, что соответствует номеру строки, с которой начинает
формироваться текст наименований статей управленческого учета;
- задается выполнение циклов от 1 до 31, что соответствует максимальному количеству дней в месяце;
- переменной Х присваивается значение, равное его предыдущему значению, увеличенному на единицу. Значение Х не было
задано и в начале выполнения цикла, оно будет равно нулю;
- текущее значение переменной Х присваивается ячейке ВА1 (номер дня месяца), по которой будет производиться выборка
данных ранее введенными формулами в диапазоне ячеек ВА10:ВА5000;
- задается перерасчет введенных формул;
- копируется содержимое диапазона ячеек BC12:BC79, формулы которых возвращают различные значения при изменении значения
ячейки ВА1;
- определяется ячейка в рабочей области платежного календаря с адресом на пересечении номера строки (Row) и номера столбца,
равного значению 3 (столбцы А:С), увеличенному на значение переменной Х. Строка кода VBA: Cells(Row, 3 + X).
В эту ячейку производится вставка значений скопированного диапазона BC12:BC79. Переменная Х с каждым циклом увеличивается
на единицу и с каждым циклом происходит переход на одну ячейку правее: D12, E12, F12, G12 и т.д. Переменную Row в этой
подпрограмме можно не использовать, а просто указать значение 12, но так нагляднее.
На следующем шаге мы рассмотрим ввод дат и сальдо на начало дня.
Предыдущий шаг
Содержание
Следующий шаг