- •Лаб. 4. Создание текстовых документов с помощью Excel на примере оформления генеральной доверенности на автомобиль
- •Доверенности
- •Написание даты прописью
- •Макросы
- •Создание листа Ввод
- •Проверка содержимого двух областей на соответствие
- •Перенос данных из листа Ввод в лист Реквизиты
- •Присвоение имен ячейкам выхода модулей формирования дат
- •Просмотр созданных доверенностей из табличной базы данных
Написание даты прописью
Для написания прописью номера дня и года можно применить таблицу, показанную на рис. 7.4. Отличие текста написания номера дня от номера года зависит только в склонении, например, номер дня 11 пишется одиннадцатое, а такой же год - одиннадцатого.
В таблице ячейка С5 является входом, в которую вводится число (или ссылка на ячейку, содержащую это число), а ячейка D5 выходом, в которой это число уже пишется прописью.
В области ячеек С6:D7 выделяются отдельно десятки и единицы этого числа. Формулы в ячейках С8:С10 предназначены для написания прописью количества десятков, а в ячейках D8:D16 для написания прописью единиц. Таблица пишет прописью числа от единицы до тридцати девяти.
Рис. 7.4. Таблица написания прописью номера дня в месяце
После создания таблицы и тестирования, ее размеры минимизируются путем вложения формул. На рис. 7.5. приведена минимизированная таблица (модуль) написания номера года. Модуль расположен в ячейках С6:F6, в которой ячейка С6 является входом, а ячейка F6 выходом. Номер года пишется от 2001 до 2039, причем прописью определяется только число от 1 до 39, а текст две тысячи дополняется.
Рис. 7.5. Модуль написания прописью номера года
Если соединить все три модуля написания текста числа, месяца и года в единое целое, то получится один модуль написания даты прописью. Как пример, такой модуль показан на рис. 7.6.
Рис. 7.6. Полученный модуль написания даты прописью
Расчет полного количества лет, дней и месяцев в интервале указанных дат
На практике довольно часто приходится определять количество дней, месяцев и лет между двумя датами. При классическом использовании Excel возможны два метода их определения, которые показаны на рис. 7.7.
Метод 1 (строки 4:6). Вычтя одну дату из другой и применив функции ГОД, МЕСЯЦ и ДЕНЬ, можно определить эти данные, но Excel анализирует дату, полученную в результате вычитания, и поэтому полученный результат не будет достоверным.
Метод 2 (строки 8:10). Состоит в том, чтобы определить год, месяц и день отдельно в двух датах, а затем произвести операцию вычитания этих составляющих. Но при вычитании отдельно лет, месяцев и дней результат может носить отрицательный характер, а такого быть не может.
Рис. 7.7. Примеры определения количества дней, месяцев и лет в интервале между двумя датами
На основании второго метода попытаемся проанализировать и использовать полученные результаты. На рис. 7.8. приведен пример модуля определения количества лет, месяцев и дней. Модуль занимает диапазон ячеек В4:D6. В ячейки В4 и В5, являющимися входом модуля, вводятся даты. Выходы модуля:
ячейка D4 - для вывода количества лет;
ячейка D5 - для вывода количества месяцев;
ячейка D6 - для вывода количества дней.
Рис. 7.8. Модуль расчета количества лет, месяцев и дней в интервале между датами
Формула в ячейке D4 работает по следующему алгоритму:
Если результат вычитания месяцев получен отрицательный, то количество полученных в результате вычитания лет, нужно уменьшить на один год. А этот год, как компенсацию за вычитание, в виде числа 12 месяцев, следует добавить к количеству полученных в результате вычитания месяцев в ячейке D5.Если номер вычитаемого месяца меньше, то тогда года вычитаются без корректировки.
Если же номера месяцев в обоих датах равны, то сравниваются дни и если результат отрицательный, то из полученного результата вычитания лет вычитается единица.
Похожий алгоритм заложен и в формулах для определения количества месяцев и дней в ячейках D5 и D6.
Формулы в ячейках С4 и С5 проводят дополнительный анализ количества календарных дней в месяце, находящемся в большей дате (ячейка В4):
Если месяц, даты введенной в ячейку В4, имеет значение 3, то необходимо дополнительно проверить, високосный это год или нет. Для анализа високосного года в дате, введенной в ячейку В4, в формуле в ячейке В5 применяется функция Excel ОСТАТ (рис. 7.9.). Если год високосный, то результат деления этого года на 4 будет равен нулю.
Если в результате деления получена дробная часть (т.е. год не високосный), то количество дней в месяце, предшествующем 3-му месяцу, будет равно 28. Если год високосный, то функция ОСТАТ выдаст значение 0. Тогда вторая функция ЕСЛИ при выполнении условия сравнения со значением 0 перейдет к своему второму аргументу, где указано значение 29 (дней в феврале).
Рис. 7.9. Панель функции ОСТАТ
Для того чтобы написать прописью определенные количество месяцев, дней и лет, необходимо соединить в единое целое (рис. 7.10.):
модуль определения этих параметров - область ячеек В4:D6;
модуль написания текста этих вычисленных параметров - область ячеек В9:D14.
Входами модуля написания текста являются ячейки В9; С9 и D9, в которые введены ссылки на соответствующие ячейки выхода модуля определения параметров.
Рис. 7.10. Модули написания прописью количества лет, месяцев и дней между двумя датами
Структура создаваемого приложения
Рабочая книга приложения, позволяющего автоматизировать процесс заполнения доверенности, содержит шесть рабочих листов. Структура взаимодействия данных, содержащихся в этих листах, показана на рис. 7.11.
Рис. 7.11. Структура потоков информации и содержания рабочих листов создаваемого приложения
Лист Реквизиты
На рабочем листе Реквизиты (рис. 7.12.) расположена база данных о клиентах и информация об автомобиле, которая необходима для автоматизированного создания доверенности. Только табличной базой данных ее можно назвать условно, потому что нарушены некоторые принципы формирования списка Excel.
Поля и записи области ввода данных, полностью удовлетворяет условиям списка - содержат однотипную информацию в каждом столбце и расположены построчно. А заголовок в табличной базе данных должен содержаться в одной строке.
На листе Реквизиты, для удобства группировки данных, заголовок содержит три строки (область А1:АF3). Данные первой строки проводят группировку по месту и дате заключения доверенности, данным по каждому клиенту и автомобилю. Во второй строке данные группируются более детализировано. Например, данные по клиенту - кто, удостоверяющий его документ и место проживания. По автомобилю - данные свидетельства о регистрации и данные об автомобиле. Из-за удобства этих группировок, отдельные ячейки всех трех строк заголовка объединены.
В четверной строке введены порядковые номера столбцов от 0 до 31.
Из-за того, что заголовок состоит из трех строк невозможно установить Автофильтр и применить диалоговое окно Форма. Это будет затруднять поиск необходимой информации и ввод данных.
Рис. 7.12. Рабочий лист Реквизиты с информацией о клиентах и автомобилях
Удобный просмотр данных можно осуществлять при помощи фильтрации. Это будет возможно при удалении трех верхних строк 1:3. Но удалять эти строки на созданном рабочем листе Реквизиты не совсем корректно. Для этого желательно создать точную копию листа, а после просмотра данных этот лист удалить. Но проведение этой операции вручную трудоемко. Для ускорения процесса последовательно запишем три макроса.
