Найти тему
Электроника, ESP32, Arduino

Решение задания из ОГЭ 2023 с помощью VBA и в чем одна из проблем ухода Microsoft

Есть такой замечательный канал посвященный предмету "Информатика" и разбору задач для подготовке к сдаче ОГЭ и ЕГЭ:

Python & ЕГЭ | ОГЭ Информатика🔺

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

А там задача в Microsoft Excel:

Таблица содержащая 1000 записей
Таблица содержащая 1000 записей

Нужно ответить на 2 вопроса:

1.  Сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику? Ответ на этот вопрос запишите в ячейку Н2 таблицы.

2.  Каков средний тестовый балл у учеников Северного округа (С)? Ответ на этот вопрос запишите в ячейку НЗ таблицы с точностью не менее двух знаков после запятой.

Метод решения автора канала, заключается в том, что с помощью функции =ЕСЛИ в дополнительных столбцах производится выборка записей по определенным условиям, а потом рассчитывается результат.

Фрагмент видео с канала Python & ЕГЭ | ОГЭ Информатика
Фрагмент видео с канала Python & ЕГЭ | ОГЭ Информатика

Как использовать эти функции прекрасно описано в видео автора канала, поэтому даже если ОГЭ по информатике Вам не нужен, но Вы хотели бы более эффективно научиться пользоваться возможностями офисного пакета от Microsoft - к просмотру рекомендовано однозначно.

Не смотря на то, что метод выуживания нужной информации из 1000 записей, с помощью функции =ЕСЛИ достаточно шустрый, в повседневной офисной работе могут возникнуть проблемы, если файлов приходиться обрабатывать много и делать это часто. Каждый раз придется вставлять формулы, следить чтобы не уехал диапазон этих формул и вообще все это очень занудно и скучно.

Но, лень двигатель прогресса, и для выполнения ОДИНАКОВЫХ, РУТИННЫХ, МНОГОКРАТНЫХ операций в офисном пакете от Microsoft есть язык макросов - Visual Basic (VBA), с помощью которого можно написать кнопку "бабло", которая заставит офис работать за Вас.

Поехали автоматизировать:

В VBA к ячейкам удобнее обращаться по номеру столбца, поэтому пронумеруем их
В VBA к ячейкам удобнее обращаться по номеру столбца, поэтому пронумеруем их
  • Сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику? Ответ в ячейку Н2 таблицы.
  • Каков средний тестовый балл у учеников Северного округа (С)? Ответ в ячейку НЗ.

Заведем 4 целочисленные переменные:

  • строка (для перемещения по строкам таблицы, столбцы нам известны)
  • колвоЛюбИнформВ (любители информатики в Восточном округе )
  • суммаБаллС (накапливаем тестовый балл учеников Северного округа)
  • колвоУченС (считаем учеников которые найдены в Северном округе)

Объявлять переменные на русском языке в программах - моветон, но VBA позволяет это делать и иногда это может быть удобно.

Алгоритм работы программы
Алгоритм работы программы

Идем в меню разработчик и создаем Макрос с понятным названием

Создание макроса в MS
Создание макроса в MS

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

-6
  • 10 учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику;
  • 540,35 средний тестовый балл у учеников Северного округа (С).
While в данном случае лучше For
While в данном случае лучше For

Почему цикл While, а не For? Данный подход, позволяет анализировать таблицы c произвольным количеством строк. Программа будет работать, пока не обнаружит пустую запись и не придется каждый раз править макрос, чтобы адаптировать его под конкретное количество строк.

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

Осталось сохранить документ в соответствующем формате:

Сохраняем документ
Сохраняем документ

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

-9

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

В чем главная проблема ухода этого офисного пакета с нашего рынка?

Главная фишка офиса от Microsoft - это его Объектная модель.

Объектная модель Excel подробнее можно посмотреть тут:
https://micro-solution.ru/excel/vba/excel-object-model
Объектная модель Excel подробнее можно посмотреть тут: https://micro-solution.ru/excel/vba/excel-object-model

Например, если Вы пишите собственное приложение и Вам потребовалось выгрузить данные в красивую табличку. Вы можете это сделать прямо из СВОЕГО приложения, даже ничего в самом Excel не нажимая. Создаете в памяти компьютера объект Application, далее рабочую книгу (Workbooks), добавляете туда листы (Worksheets), заполняете ячейки, форматируете и сохраняете файл на диск или отправляете сразу на принтер или открываете и показываете пользователю для дальнейшего редактирования. С помощью VBA можно выполнить практические любые операции, которые делаются руками через меню графического интерфейса.

Один из сложных примеров офисной автоматизации, которую мне приходилось делать - автоматическое создание спецификаций из чертежей в Autocad. Вы чертите чертеж, и вызываете макрос написанный на Lisp в самом Autocad. Он искал нарисованные на определенным слое чертежа объекты и создавал готовую спецификацию в Excel, с количеством того, что нарисовано.

Еще пример: Получить из данных таблички в Excel несколько сотен красиво отформатированных документов Word, которые можно сразу отправить на принтер.

И тут, как бы, возникает вопрос.... Совсем не сложно, некой условной "тете Клаве" снести с её ПК Microsoft Office, и поставить бесплатный офисный пакет, "тетя Клава" поворчит и привыкнет к новому интерфейсу. Но, что будет делать "тетя Клава", если перестанет работать приложение, которое умело само создавать несколько десятков готовых документов в минуту, а "тете Клаве" оставалось их только проверить и распечатать.

Источник: https://pikabu.ru/story/skrepka_murka_merlin_i_drugie_pomoshchniki_ms_office_4970425
Источник: https://pikabu.ru/story/skrepka_murka_merlin_i_drugie_pomoshchniki_ms_office_4970425

Это были "мысли в слух", свои мысли оставляйте в комментариях.

Файл с примером из статьи тут:

task_14.xlsm

Оглавление канала доступно тут:

Всем удачи!