Есть такой замечательный канал посвященный предмету "Информатика" и разбору задач для подготовке к сдаче ОГЭ и ЕГЭ:
Python & ЕГЭ | ОГЭ Информатика🔺
В те далекие времена, когда ходили мамонты я учился в школе, понятие персональный компьютер еще не существовало, и я иногда заглядываю туда, чтобы посмотреть, чем же живет современное образование.
А там задача в Microsoft Excel:
Нужно ответить на 2 вопроса:
1. Сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику? Ответ на этот вопрос запишите в ячейку Н2 таблицы.
2. Каков средний тестовый балл у учеников Северного округа (С)? Ответ на этот вопрос запишите в ячейку НЗ таблицы с точностью не менее двух знаков после запятой.
Метод решения автора канала, заключается в том, что с помощью функции =ЕСЛИ в дополнительных столбцах производится выборка записей по определенным условиям, а потом рассчитывается результат.
Как использовать эти функции прекрасно описано в видео автора канала, поэтому даже если ОГЭ по информатике Вам не нужен, но Вы хотели бы более эффективно научиться пользоваться возможностями офисного пакета от Microsoft - к просмотру рекомендовано однозначно.
Не смотря на то, что метод выуживания нужной информации из 1000 записей, с помощью функции =ЕСЛИ достаточно шустрый, в повседневной офисной работе могут возникнуть проблемы, если файлов приходиться обрабатывать много и делать это часто. Каждый раз придется вставлять формулы, следить чтобы не уехал диапазон этих формул и вообще все это очень занудно и скучно.
Но, лень двигатель прогресса, и для выполнения ОДИНАКОВЫХ, РУТИННЫХ, МНОГОКРАТНЫХ операций в офисном пакете от Microsoft есть язык макросов - Visual Basic (VBA), с помощью которого можно написать кнопку "бабло", которая заставит офис работать за Вас.
Поехали автоматизировать:
- Сколько учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику? Ответ в ячейку Н2 таблицы.
- Каков средний тестовый балл у учеников Северного округа (С)? Ответ в ячейку НЗ.
Заведем 4 целочисленные переменные:
- строка (для перемещения по строкам таблицы, столбцы нам известны)
- колвоЛюбИнформВ (любители информатики в Восточном округе )
- суммаБаллС (накапливаем тестовый балл учеников Северного округа)
- колвоУченС (считаем учеников которые найдены в Северном округе)
Объявлять переменные на русском языке в программах - моветон, но VBA позволяет это делать и иногда это может быть удобно.
Идем в меню разработчик и создаем Макрос с понятным названием
В открывшемся окне пишем код и нажимаем зленый треугольник.
- 10 учеников в Восточном округе (В) выбрали в качестве любимого предмета информатику;
- 540,35 средний тестовый балл у учеников Северного округа (С).
Почему цикл While, а не For? Данный подход, позволяет анализировать таблицы c произвольным количеством строк. Программа будет работать, пока не обнаружит пустую запись и не придется каждый раз править макрос, чтобы адаптировать его под конкретное количество строк.
Важно: Ошибок не прощают женщины, тетрис на 9 скорости, и цикл While в офисных приложениях. Если Вы получите бесконечный цикл, программу можно будет закрыть, только грохнув процесс через диспетчер задач, поэтому всегда сохраняйте документ с макросом перед запуском, иначе в случае ошибке в коде все придется писать заново.
Осталось сохранить документ в соответствующем формате:
и торжественно вручить его пользователю, который будет анализировать данные из таких таблиц. Данные можно будет вставлять в файл с макросом в столбцы A....D и вызывать его через меню "разработчик":
Писать в среде VBA достаточно легко. В Интернет полно примеров. Имея опыт программирования на любом языке с помощью VBA, вы решите похожую офисную задачу гораздо быстрее, чем шпигуя таблицу бесконечными формулами, а самое главное всегда сможете отдать такой файл коллеге, который и программировать не умеет, и с формулами не дружит.
В чем главная проблема ухода этого офисного пакета с нашего рынка?
Главная фишка офиса от Microsoft - это его Объектная модель.
Например, если Вы пишите собственное приложение и Вам потребовалось выгрузить данные в красивую табличку. Вы можете это сделать прямо из СВОЕГО приложения, даже ничего в самом Excel не нажимая. Создаете в памяти компьютера объект Application, далее рабочую книгу (Workbooks), добавляете туда листы (Worksheets), заполняете ячейки, форматируете и сохраняете файл на диск или отправляете сразу на принтер или открываете и показываете пользователю для дальнейшего редактирования. С помощью VBA можно выполнить практические любые операции, которые делаются руками через меню графического интерфейса.
Один из сложных примеров офисной автоматизации, которую мне приходилось делать - автоматическое создание спецификаций из чертежей в Autocad. Вы чертите чертеж, и вызываете макрос написанный на Lisp в самом Autocad. Он искал нарисованные на определенным слое чертежа объекты и создавал готовую спецификацию в Excel, с количеством того, что нарисовано.
Еще пример: Получить из данных таблички в Excel несколько сотен красиво отформатированных документов Word, которые можно сразу отправить на принтер.
И тут, как бы, возникает вопрос.... Совсем не сложно, некой условной "тете Клаве" снести с её ПК Microsoft Office, и поставить бесплатный офисный пакет, "тетя Клава" поворчит и привыкнет к новому интерфейсу. Но, что будет делать "тетя Клава", если перестанет работать приложение, которое умело само создавать несколько десятков готовых документов в минуту, а "тете Клаве" оставалось их только проверить и распечатать.
Это были "мысли в слух", свои мысли оставляйте в комментариях.
Файл с примером из статьи тут:
Оглавление канала доступно тут:
Всем удачи!