Шаг 448.
VBA в MSExcel. Бюджетирование... . Создание таблицы распределенных платежей. Подпрограмма СозданиеТаблицыРаспрПлатежей (продолжение)

    На этом шаге мы продолжим изучение этого макроса.

Подпрограмма СортировкаПлатежей

    Для записи макроса СортировкаПлатежей (рисунок 2), поместите табличный курсор в область созданной таблицы и, выполнив команду Данные | Сортировка, вызовите диалоговое окно Сортировка диапазона (рисунок 1).


Рис.1. Диалоговое окно Сортировка диапазона


Рис.2. Подпрограмма тройной сортировки по убыванию созданной таблицы

    Это диалоговое окно позволяется произвести последовательную сортировку таблицы в выбранной последовательности и выбранному режиму: по убыванию или по возрастанию. Задайте сортировку всех трех столбцов с числовыми данными по убыванию в любой последовательности. Такая "тройная" операция сортировки дает стопроцентную гарантию, что все ячейки, содержащие суммы распределенных платежей в столбцах В:D, будут расположены в верхней области листа.

    Обратите внимание на текст кода VBA полученной подпрограммы после его редактирования. Он хорошо подчеркивает свойство Sort по проведению тройной сортировки, не считая первую строку строкой заголовка.

Подпрограмма ФормулыРаспрПлатежей

    Задача подпрограммы ФормулыРаспрПлатежей (рисунок 3) - ввести формулы в созданный лист Прогноз (2).


Рис.3. Подпрограмма ФормулыРаспрПлатежей

    В диапазон ячеек G2:G26 вводятся ссылки на ячейку, расположенную выше. В диапазон J1:J26 вводятся формулы определения среднедневной подекадной суммы равномерных поступлений денежных средств в зависимости от декады. Формула в ячейке J1:

  =ЕСЛИ(ЛЕВСИМВ($G$1;1)="В";0;
    ЕСЛИ($F1="";0;ВПР($G$1;$A$1:$D$26;
    ЕСЛИ(ДЕНЬ($F1)<=10;2;
    ЕСЛИ(ДЕНЬ($F1)<=20;3;4));ЛОЖЬ))) 

    В первую очередь формула проверяет первый левый символ кода управленческого учета, и, если им является буква В (выплаты/расходы), то формула возвращает значение 0. Далее формула проверяет, присутствует ли в ячейке F1 дата. При ее отсутствии (день не рабочий) также возвращается значение 0. При не выполнении двух первых условий, функция ВПР производит поиск в области А1:D26 значений сумм, указанного в ячейке G1 кода управленческого учета, при этом номер столбца определяется в зависимости от номера дня даты, введенной в столбце F. Например, если номер дня до 10-и, то 2-й столбец, если выше 20-го номера, то столбец 4-й.

    Формула в ячейке К1 аналогична предыдущей, но возвращает суммы расхода сумм равномерных платежей по первой букве П:

  =ЕСЛИ(ЛЕВСИМВ($G$1;1)="П";0;
    ЕСЛИ($F1="";0;ВПР($G$1;$A$1:$D$26;
    ЕСЛИ(ДЕНЬ($F1)<=10;2;
    ЕСЛИ(ДЕНЬ($F1)<=20;3;4));ЛОЖЬ))) 

    Эти формулы "начинают" работать только при выполнении макроса ЦиклФормированияПлатежей и их смысл будет описан далее.

Подпрограмма ЦиклФормированияПлатежей

    Основой подпрограммы ЦиклФормированияПлатежей является цикл Do-Loop.


Рис.4. Подпрограмма ЦиклФормированияПлатежей

    Последовательность выполнения ЦиклФормированияПлатежей подпрограммы следующая:


Рис.5. Лист Прогноз (2) с отсортированными данными распределенных платежей

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг