Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
excel программирование / МУ заадания по программированию.docx
Скачиваний:
54
Добавлен:
11.06.2015
Размер:
1.64 Mб
Скачать

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЛЕСОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ имени С.М. Кирова»

Кафедра управления, автоматизации и системного анализа

В.А. Горбачёв, кандидат экономических наук,

А.А. Логачёв, аспирант

ПРОГРАММИРОВАНИЕ В СРЕДЕ EXCEL

Комплекс заданий по программированию в среде EXCELи методические указания по их выполнению

Рекомендовано для студентов обучающихся по направлениям подготовки бакалавриата 230400, 080100, 080200 при изучении дисциплин «Информационные технологи» и «Информационные технологии в менеджменте» при выполнении курсовых проектов и лабораторных работ

Санкт Петербург

2014

Рассмотрено и рекомендовано к изданию учебно-методической комиссией факультета экономики и управления Санкт-Петербургского государственного лесотехнического университета 13 ноября 2014 г.

О т в. р е д а к т о р

Кандидат экономических наук, доцент В.А. Горбачёв

Р е ц е н з е н т ы:

УДК 004.652.6, 004.655, 004.657

Горбачёв В.А.

Программирование в среде Excel. Комплекс заданий по программированию в среде EXCELи методические указания по их выполнению. В.А. Горбачёв, А.А. Логачёв – СПб. : СПбГЛТУ, 2014. –79 с.

Представлено кафедрой управления, автоматизации и системного анализа

В методических указаниях описаны задания по программированию в среде Excel и задание по разработке проекта по подготовке и выпуску счетов – фактур. Описание предполагает проведение комплекса лабораторных работ, результаты которых оформляются в отчёт. Для заданий по программированию и проекта выпуска счетов – фактур приведены подробные описания выполнения заданий. В приложении приведены справочные материалы по программированию в среде Excel. Комплекс лабораторных работ включает следующие темы изучения: создание простейших программ в среде Excel, создание усложнённых программ и разработка проекта по подготовке и выпуску счетов – фактур.

Табл. Ил.

Темплан 2014 г. Изд. №

© Санкт-Петербургский государственный

ISBN лесотехнический университет

Содержание

Введение………………………………………………………………………….01

Задание 1...……………………………………………………………………….01

Задание 2…………………………………………………………………………01

Задание 3…………………………………………………………………………01

Задание 4…………………………………………………………………………01

Литература и ссылки…………………………………………………………….01

Приложение Будет или нет?……………………………………………………01

Введение

Процесс выполнения лабораторных работ представляет собой один из этапов подготовки бакалавра, инженера или магистра в Вузе, а также является важной составной частью учебного. Цель лабораторных работ - закрепить и расширить теоретические знания и практические навыки студентов в решении различных предметных прикладных задач с элементами исследований в рамках избранной специальности. Студент, выполняя лабораторную работу, должен: расширить, закрепить и систематизировать свои теоретические знания по предмету «Управление данными», «Информационные системы», «Информационные системы в экономике»; проявить самостоятельность в творческом применении полученных знаний; продемонстрировать навыки в пользовании современными компьютерными технологиями.

Результатом выполнения лабораторных работ по данному курсу является отчёт. По своему содержанию отчёт представляет собой описание выполненной работы, включающее в себя задание, его выполнение, программный код и изображения экрана («скриншоты») созданных таблиц. Отчет по лабораторной работе может оформляться с использованием различных текстовых и графических редакторов. Отчет должен включать в себя: титульный лист; задание; оглавление; введение; текст работы; заключение. Введение содержит цель работы (общая постановка задачи), краткое описание вопросов, рассмотренных и решенных в ходе выполнения лабораторной работы. Текст отчёта должен включать в себя описание разработки и реализации программного модуляVBA. Заключение должно содержать краткий анализ результатов работы.

Задание 1

В задании 1 рассмотрен пример выполнения простейшей программы в среде Microsoft Office Excel (далее все примеры будут рассмотрены для версии Office 2007). Пусть необходимо рассчитать стоимость заказа с учетом скидок по накоплениям за предыдущие покупки. Например, если к моменту оформления заказа клиент уже совершил покупок на сумму от 10000, то он получает скидку в размере 10%. Пример таблицы скидок для задания приведён в таблице:

Накопленная сумма

Скидка

10000

10%

20000

12%

30000

15%

40000

17%

50000

20%

60000+

25%

В рамках выполнения задания 1 студент обязан:

  1. Открыть новый лист в программе Microsoft Office Excel

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

  3. Во встроенном в Microsoft Excel редакторе Visual Basic создать программный модуль, выполняющий расчёт суммы заказа с учётом пользовательской скидки

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

  5. Нажатием на кнопку осуществить запуск программы и убедиться в корректности проведённого расчёта. В случае наличия ошибок, исправить их.

  6. Сохранить созданный лист в формате «Книга Excel с поддержкой макросов»

При открытии программы Microsoft Office Excel новый чистый лист обычно создаётся автоматически. Но если этого не произошло, то следует нажать кнопу управления (в левом верхнем углу) – Создать – Новая книга – Создать.

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

Примерныйвид создаваемого листа показан на рисунке ниже (кнопка «Расчёт суммы» будет добавлена позднее):

Схема работы программы будет следующей: в ячейку «Накопленная сумма» (закрашено жёлтым) вводится сумма покупок сделанных ранее и при нажатии кнопки «Расчёт суммы» по таблице скидок должен быть вычислен процент скидки, посчитана стоимость заказа и занесена в ячейку «Сумма заказа» ( голубой фон).

Это задание может быть выполнено и встроенными средствами Excel, однако целью данных работ является освоение возможностей программирования в средеVisualBasic, встроенной вExcel. Поэтому разработаем программу на языкеVBA, с помощью которой решим поставленную задачу. В рамках этой конкретной задачи опишем последовательность действий для её решения.Более широкий набор сведений о программировании в VBA приведён в приложении.

В общем, алгоритм решения этой задачи сводится к программированию следующих этапов:

  1. Последовательно сравнить значение накопленной суммы с величинами сумм в таблице скидок. Если накопленная сумма меньше 10000, то скидка – 0, от 10000 до 20000 скидка - 10% и так далее. Если накопленная сумма больше 60000, то скидка 25%.

  2. Просматриваем все строки заказа, умножая цену на количество с накоплением суммы. Полученную сумму уменьшаем на процент найденной скидки и заносим в ячейку «Сумма заказа».

Чтобы реализовать данный алгоритм, необходимо создать программный модуль и внедрить в него свою процедуру. Это делается следующим образом: в верхней панели управления откройте вкладку «Разработчик»и в ней кликните кнопку«Visual Basic»:

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

Далее в правом окне редактора VBAнеобходимо создать процедур. Для этого следует нажать в верхней панели управления вкладкуInsert, а в ней выбрать пунктProcedure. В открывшемся окне в полеNameввести любое (латинскими символами) название создаваемой процедуры и нажать кнопкуОК. Последовательность выполнения данных действий показаны на следующем рисунке:

В результате выполненных действий будет создана заготовка процедуры, которая выглядит следующим образом:

Public Sub SummaZakaza()

«Тело процедуры»

End Sub

Теперь в тело процедуры необходимо вставить программу, которая будет решать поставленную задачу. Ниже приведён код всей процедуры с пояснениями (пояснения, обозначаемые знаком «'» в начале строки перепечатывать необязательно – они указаны для описания логики работы команд VBAи программы в целом).

Public Sub SummaZakaza()

'Объявление переменной для хранения процентной скидки

'в формате вещественного числа

Dim sngProcentSkidki As Single

'объявление переменной для хранения суммы заказа

'в денежном формате

Dim curSumZak As Currency

'объявление переменной для хранения накопленной суммы

'в денежном формате

Dim curNakSum As Currency

' объявим переменную управления циклом

' и логическую переменную для проверки (флаг): найден ли процент скидки

Dim i As Integer, boFlag As Boolean

'сохраняем в переменной содержимое ячейки J5 (накопленная сумма)

curNakSum = ActiveSheet.Range("J5")

' Установим флагу значение - ложь, то есть на данный момент процент скидки не найден)

boFlag = False

' теперь нужно организовать цикл по перебору граничных сумм

' в таблице скидок

' параметр цикла i будет изменяться от 4 до 9 - с четвёртой по девятую строку

For i = 4 To 9

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

If curNakSum < ActiveSheet.Cells(i, 7) Then

' если да, то нужно выполнить проверку: накопленная сумма меньше

' первой граничной суммы (10000),

If i = 4 Then

'так как в этом случае скидка будет равна нулю

sngProcentSkidki = 0

Else

' иначе выбираем процент скидки из столбца 11 предыдущей строки таблицы

' и заносим его в переменную

sngProcentSkidki = ActiveSheet.Cells(i - 1, 8)

End If

' помечаем в переменной флага, что скидка была обнаружена

boFlag = True

' и завершаем цикл, чтобы не просматривать оставшиеся строки таблицы

Exit For

End If

Next

' если переменная флага была установлена в True, то скидка была найдена

' а если False, то накопленная сумма оказалась больше самой большой

' граничной суммы таблицы скидок и нужно взять максимальную скидку

' из 9 строки 8 - го столбца, то есть 25%

If Not boFlag Then

sngProcentSkidki = ActiveSheet.Cells(9, 8)

End If

' Теперь будем вычислять сумму заказа

' сначала сумма заказа равна нулю

curNakSum = 0

' для подсчёта суммы организуем цикл с 5 по 8 строки таблицы заказов

For i = 5 To 8

' здесь к переменной суммы добавляем произведение количества на цену

' для каждой строки таблицы заказов

curNakSum = curNakSum + ActiveSheet.Cells(i, 2) * ActiveSheet.Cells(i, 3)

Next

' полученную сумму занесём в ячейку суммы заказа уменьшив её на величину скидки

' напомним, что скидка хотя и показана в процентах, хранится в долях единицы

ActiveSheet.Range("J8") = curNakSum * (1 - sngProcentSkidki)

End Sub

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

И выберем среди элементов управления формы элемент «Кнопка» (самый первый в списке). Кликнем по нему и выделим курсором на листе место под кнопку при нажатой левой клавише мыши. В результате появится окно настройки кнопки, в котором выберем созданную процедуру и нажмём кнопку ОК.

В результате появится кнопка, у которой можно заменить название на «Расчёт суммы». Теперь можно проверить работу программы. Введите значение накопленной суммы в соответствующую ячейку и нажмите кнопку «Расчёт суммы». В ячейке «Сумма заказа» должен появиться результат вычислений. Попробуйте поменять значение накопленной суммы и посмотреть различные результаты работы программы.

Заключение и выводы по заданию 1:

  • Создан и оформлен в соответствии с заданием новый лист Excel

  • Создан программный модуль и написана процедура, выполняющая требуемый расчёт

  • Для ссылки на ячейки листа ExcelвVBAиспользовались два типа команд: ссылка по стандартной нумерацииExcel, например,ActiveSheet.Range("J5") (ссылка на значение ячейкиJ5) и ссылка по абсолютной нумерации листа, например, ActiveSheet.Cells(9, 8) (ссылка на значение ячейки, занимающей 9 строку и 8 столбец, то естьH9)

  • Для расчётов используется цикл вида:

For i = «первый шаг цикла» To «последний шаг цикла»

«Тело цикла»

Next

  • Для проверок выполнения различных условий используется следующий оператор:

If «Условие» Then

«Порядок действий если условие выполняется»

Else

«Порядок действий если условие не выполняется»

End If

Примечание: после выполнения задания не забудьте его сохранить в формате «Книга Excel с поддержкой макросов»!

Соседние файлы в папке excel программирование