Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ивличева Н.А. Информиционные системы... Практикум Ч. 1

.pdf
Скачиваний:
15
Добавлен:
07.01.2021
Размер:
962.99 Кб
Скачать

11

6. Рассчитайте сумму по столбцу. Таким образом, расходы на оплату услуг сотовой связи по первому тарифному плану составляют 447,41р.

Аналогичным образом в уже существующем модуле создайте функции для

расчета расходов по остальным тарифным планам:

Second_plan

Third_plan

Fourth_plan

Fifth_plan

Sixth_plan Seventh_plan

При создании кода функции Fifth_plan учтите, что пятый тарифный

план использует поминутную тарификацию. При такой тарификации неполная минута разговоров оплачивается так же, как и полная. Для подсчета количества минут разговора используйте выражение int(counting/60)+1, где int() – взятие целой части числа.

Рассчитайте расходы при использовании каждого тарифного плана.

Определение оптимального тарифного плана

В свободной ячейке Листа 1 найдите минимальное значение расходов на

оплату услуг из всех тарифных планов. Для этого используйте статистическую функцию МИН().

Выведем название оптимального тарифного плана. Для этого сначала определим, на каком месте в массиве итоговых расходов находится минимальное число. Сделаем это с помощью функции ПОИСКПОЗ() из категории Ссылки и массивы. Эта функция имеет следующий синтаксис:

ПОИСКПОЗ(искомое_значение; массив_итоговых_расходов; 0)

В свободной ячейке Листа 1 найдите, на каком месте в массиве итоговых расходов находится значение, выдаваемое функцией МИН(). (Номер элемента

массива называют его индексом.)

Теперь выясним, какой тариф фигурирует под номером, найденным функцией ПОИСКПОЗ. Сделаем это с помощью функции ВЫБОР() из категории Ссылки и массивы. Эта функция имеет следующий синтаксис:

ВЫБОР(номер_индекса; значение1; значение2;…)

В свободной ячейке Листа 1 найдите, какой тариф фигурирует под номером, найденным функцией ПОИСКПОЗ. В качестве аргументов Значение1, Значение2,... указывайте названия соответствующих тарифов из шапки таб-

лицы 1.2.

Определим оптимальный тариф без использования вспомогательных вычислений. Для этого в качестве аргументов функций будем указывать не ссылки

12

на ячейки с результатами вычисления функций, а сами эти функции, то есть, используем композицию функций.

Последней используется функция ВЫБОР(), поэтому вставку функций следует начинать с нее.

Всвободную ячейку Листа 1 вставьте функцию ВЫБОР().

Вкачестве аргумента Номер_индекса используется результат вычисления функции ПОИСКПОЗ(). Поместите курсор в

поле Номер_индекса, затем откройте список в левой части строки формул и выберите функцию ПОИСКПОЗ(). При этом откроется окно аргументов функции ПОИСКПОЗ(). В качестве аргумента Искомое_значение используется результат вычисления функции МИН(). Поместите курсор в поле Искомое_значение и с помощью списка в строке формул выберите функцию МИН().

В строке формул отображаются все введенные функции композиции. Редактируемая функция выделена полужирным начертанием. Для перехода к другой функции нужно щелкнуть ее название в строке формул, при этом откроется окно аргументов этой функции.

Аккуратно введите все аргументы композиции функций, руководствуясь выполненным заданием и указанным ниже синтаксисом.

=ВЫБОР ( ПОИСКПОЗ ( МИН (массив_итоговых_расходов); массив_итоговых_расходов; 0); тариф1; тариф2; ...; тариф7)

Уточнение пятого тарифного плана

При обработке пятого тарифного плана выражение для подсчета оплачиваемых минут разговора дает неверный результат, если количество минут целое, то есть, если int(counting/60)=counting/60. В этом случае единицу к це-

лой части частного прибавлять не следует, и количество минут разговора определяется по формуле counting/60.

Для выполнения различных действий в зависимости от истинности или ложности некоторого условия в Visual Basic используется условный оператор, имеющий синтаксис:

If условие Then конструкции_для_обработки_истинного_условия

Else

конструкции_для_обработки_ложного_условия

End If

Откройте окно редактора с кодом функции Fifth_plan. Реализуйте

подсчет количества минут разговора с использованием условного оператора.

13

ЗАДАНИЕ 2. МОДЕЛИРОВАНИЕ СКОРИНГОВОЙ СИСТЕМЫ

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

Задача

Смоделируйте скоринговую систему с изменяемыми коэффициентами, создав анкету на основе списков, используя встроенные функции и макросы.

Заполнение скоринговой таблицы

Запустите Excel, присвойте Листу 1 имя Скоринговая таблица и

введите данные из таблицы 2.1. Для совпадения адресации ячеек с пособием данные вводите с первой строки листа.

Таблица 2.1 – Скоринговая таблица

Категория

Значение

Коэффициент

Возраст

до 25 лет

10

Возраст

от 25 до 35 лет

15

Возраст

от 35 до 45 лет

35

Возраст

старше 45 лет

20

Состоит ли в браке

Да

30

Состоит ли в браке

Нет

10

Стаж работы

до 1 года

5

Стаж работы

от 1 года до 3 лет

10

Стаж работы

от 3 лет до 6 лет

15

Стаж работы

больше 6 лет

15

Наличие кредита в прошлом

Да

30

Наличие кредита в прошлом

Нет

10

Наличие автомобиля

Да

40

Наличие автомобиля

Нет

10

Количество несовершеннолетних детей

Нет

10

Количество несовершеннолетних детей

Один

25

Количество несовершеннолетних детей

Двое или трое

20

Количество несовершеннолетних детей

Четыре и больше

5

Образование

Высшее

25

Образование

Среднее

10

Образование

Среднее специальное

15

Место проживания

Собственная квартира или дом

35

Место проживания

Съемная квартира

5

Место проживания

Муниципальное жилье

10

Рассчитайте максимальный коэффициент по каждой категории. Для этого выделите любую ячейку в таблице и выполните команду меню Данные – Итоги. Заполните поля диалогового окна по образцу, приведенному на

14

рисунке 2.1, и нажмите кнопку ОК.

Рисунок 2.1

Вслучае правильного заполнения занятыми окажутся 34 строки. Заполните ячейки А36 и А37 текстом:

Вячейку В36 введите формулу для подсчета суммы максимального значения баллов в каждой сравниваемой категории. В ячейку В37 введите значение

процента 70%. При этом строки 36 и 37 примут вид:

Оформление анкет

Перейдите на Лист 2 и переименуйте его, присвоив ему имя Анкета. Введите в ячейки столбца А названия категорий и немного увеличьте вы-

соту строк:

Для заполнения анкеты используем автоматические элементы управления – поля со списком. Элементы управления позволяют придать интерактивность проекту.

Для вставки элементов управления отобразите с помощью команды меню Вид – Панели инструментов – Формы панель работы с элементами формы.

15

Выберите на панели элемент управления Поле со списком и начертите мышью прямоугольник поля на ячейке В1.

Настройте действие списка. Для этого выделите его, щелкните на нем правой кнопкой мыши и выберите пункт Формат объекта. Перейдите на вкладку Элемент управления и заполните поля по образцу, показанному на ри-

сунке 2.2.

Рисунок 2.2

Замечание. В поле Формировать список по диапазону указывается адрес диапазона ячеек, содержащих возможные значения в указанной категории (возможные значения возрастов на листе Скоринговая таблица). В поле Связь с

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

Аналогично сформируйте списки для остальных категорий. Список связывайте с ячейкой, над которой он располагается. При необходимости, измените ширину столбца В так, чтобы текст в списке был полностью виден на экране.

Проверьте правильность функционирования списков – при открытии списка он должен выдавать верные значения для категорий.

Теперь настроим обработку списков так, чтобы при выборе элемента списка в столбце С отображалось значение соответствующего коэффициента из скорин-

говой таблицы. Для этого воспользуемся функцией ВЫБОР().

Выделите ячейку С1 и выполните команду меню Вставка – Функция, в категории Ссылки и массивы найдите функцию ВЫБОР.

В поле Номер индекса укажите адрес ячейки, с которой связан первый список (В1), поля Значение1, … содержат ссылки на ячейки со значениями ко-

эффициентов, соответствующих элементам из поля со списком (эти данные расположены в столбце С листа Скоринговая таблица).

16

Замечание. После ввода функции вы можете увидеть сообщение об ошибке. Это происходит из-за того, что ни один элемент списка может быть еще не выбран.

Аналогично заполните формулами для обработки соответствующих списков ячейки диапазона С2:С8.

Вячейку С9 добавьте формулу, подсчитывающую сумму набранных по ан-

кете баллов.

Вячейке С10 разместим формулу для принятия решения: если сумма бал-

лов по анкете превышает 70% от максимально возможной суммы баллов, то принимается решение о выдаче кредита, в противном случае в кредите будет отказано. Это можно сделать с помощью функции ЕСЛИ() из категории Логические. Эта функция имеет следующий синтаксис:

ЕСЛИ ( логическое_выражение; значение_если_истина; значение_если_ложь)

В ячейку С9 вставьте логическую функцию ЕСЛИ(), которая проверяла бы истинность логического выражения: сумма набранных по анкете бал-

лов больше, чем 70% от максимально возможной суммы баллов.

Если это условие истинно, то функция должна выдавать значение “Решение

положительно”, если условие ложно – значение “Решение отрицательно”.

Замечание. При вводе логического выражения используйте ссылки на ячейки B36 и B37 скоринговой таблицы.

Обработка анкет

Заполните поля анкеты в соответствии с данными потенциального клиента и определите решение по запросу:

Кредит просит женатый мужчина 34 лет с высшим образованием, имеющий подтверждаемый стаж работы 8 лет. Потенциальный клиент имеет дочь 7 лет и сына 2 лет, проживает в собственной квартире. Клиент обращается за кредитом первый раз, своего автомобиля не имеет.

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

17

Проверьте, повлияет ли на решение наличие у клиента автомобиля.

Подбором характеристик составьте четыре целевые группы, на которые рассчитана кредитная программа.

Изменение коэффициентов

Цель скоринговой таблицы – минимизировать риск невозврата кредита. Каждый случай невозврата должен рассматриваться отдельно, коэффициенты, соответствующие характеристикам должника, должны уменьшаться.

Рассмотрим возможный вариант организации пересчета.

Перейдите на Лист 3 и переименуйте его в Невозвраты.

В первой строке введите шапку для анкеты должника, как показано на рисунке 2.3.

Рисунок 2.3

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

Заполните эту анкету в своей книге.

Введите данные анкеты на лист Невозвраты. При вводе не допускайте

опечаток, не используйте лишних пробелов.

18

Рисунок 2.4 Обработать эти результаты можно с помощью макросов.

Для комфортной работы с макросами выполните команду меню Сервис – Макрос – Безопасность и установите средний уровень безопасности. Сохра-

ните изменения в документе. Закройте и вновь откройте документ, не отключая макросы.

Поместите курсор в одну из ячеек с введенными данными на листе Невозвраты (в ячейку строки 2 на рисунке 2.4).

Выполните команду меню Сервис – Макрос – Макросы, введите имя макроса Обработка и нажмите кнопку Создать. Откроется редактор Visual

Basic For Applications с готовыми заголовками макроса.

Текст программы обработки анкеты должен располагаться между заголовками макроса:

При работе с объектами в VBA используется точечная нотация:

Объект.Свойство

1. Считаем в переменную nom_str номер строки, в которой расположен

курсор:

nom_str = ActiveCell.Row

Здесь:

nom_str – имя переменной, которая будет содержать номер строки, ActiveCell – объект Excel, представляющий собой выделенную в на-

стоящий момент ячейку,

Row – свойство объекта ActiveCell, хранящее номер строки выделенной

ячейки.

2. Обработаем категорию Возраст.

2.1. Определим возраст клиента в выделенной строке и запишем его в переменную vozr:

vozr = Cells(nom_str, 1).Value

Здесь:

vozr – переменная, которая будет хранить возраст клиента,

Cells – объект Excel, представляющий собой ячейку. В скобках указыва-

ется номер строки и столбца, на пересечении которых она расположена,

Value – свойство объекта Cells, хранящее значение, введенное в ячейку.

19

2.2.Для пересчета коэффициентов надо перейти на лист Скоринго-

вая таблица. Это достигается командой

Sheets("Скоринговая таблица").Select

2.3.Теперь нужно на листе Скоринговая таблица просмотреть значе-

ния в строках второго столбца со второй по пятую (возможные значения возрастов) и сравнить их с переменной vozr. Для этого воспользуемся циклом с пара-

метром i, изменяющимся от двух до пяти:

For i = 2 To 5

Next i

Таким образом, переменная i будет содержать номер просматриваемой

строки.

Теперь, если значение возраста во втором столбце совпадает с переменной vozr, то соответствующее значение коэффициента в третьем столбце надо умень-

шить на 0,1 («вес» анкеты одного человека), а если не совпадает, то увеличить на 0,1:3 (так как в категории возраста еще три значения). Это достигается использованием в теле цикла условного оператора, который имеет синтаксис:

If условие Then конструкции_для_обработки_истинного_условия

Else

конструкции_для_обработки_ложного_условия

End If

В данном случае условный оператор имеет вид:

If Cells(i, 2).Value = vozr Then

Cells(i, 3).Value = Cells(i, 3).Value-0.1

Else

Cells(i, 3).Value = Cells(i, 3).Value+0.1/3 End if

С учетом сказанного текст макроса будет иметь вид:

Введите текст макроса в редакторе VBA.

20

 

3. Теперь обработаем следующую категорию –

Состоит ли в браке.

Для этого после строки vozr = Cells(nom_str,

1).Value считаем в пе-

ременную brak текущее значение признака из второго столбца анкеты: brak= Cells(nom_str, 2).Value

После оператора Next i добавим новый цикл для обработки соответст-

вующего диапазона (строки 7 и 8 на листе Скоринговая таблица):

For i = 7 To 8

If Cells(i, 2).Value = brak Then

Cells(i, 3).Value = Cells(i, 3).Value-0.1

Else

Cells(i, 3).Value = Cells(i, 3).Value+0.1 End if

Next i

Измените текст макроса в редакторе VBA.

Аналогично добавьте обработку остальных категорий, введя переменные stage (Стаж работы),

kredit (Наличие кредита в прошлом), auto (Наличие автомобиля),

deti (Количество несовершеннолетних детей), obraz (Образование),

mesto (Место проживания).

Закройте редактор макросов.

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

Для вставки элемента управления отобразите с помощью команды меню Вид – Панели инструментов – Формы панель работы с элементами формы.

Выберите на панели элемент управления Кнопку и на листе Невозвраты в ячейке J1 нарисуйте мышью кнопку. В появившемся окне Назначить макрос объекту выберите макрос Обработка и щелкните кнопку ОК – появится кнопка Кнопка1. Для смены имени щелкните на ней правой кнопкой мыши (не выделяя!) и выберите пункт меню Изменить текст. Назовите кнопку Рассчи-

тать.

Поместите курсор в любую ячейку второй строки листа Невозвраты и щелкните кнопку Рассчитать. Перейдите на лист Скоринговая таблица.

Обратите внимание на изменение коэффициентов.

Перейдите на лист Анкета. Обратите внимание на изменение решения о

выдаче кредита:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]