Анализ диагностических работ
Представляю изменённый вариант программы. Он выполнен с применением ряда модулей написанной в апреле 2018 года программы анализа ВПР.
Какова логика работы программы?
- Вы можете считать внутрь файла новые Исходные данные по запросу. При этом они одновременно дублируются в лист Копия.
- Программа подсчитывает число строк и столбцов и выводит найденные значения на экран.
- Данные копируются на лист Количество участников и идёт их перебор не сверху, а снизу, что позволяет спокойно добавлять или удалять строки, и это не сбивает цикл. Раньше я удалял лишние школы, а теперь от этого отказался. Данные изначально идут уже отсортированными по школам. При переборе данных перед каждой новой школой вставляется пустая строка, а номера этих строк запоминаются.
- Затем анализируются задания, причем вновь проверяется их начальная позиция. При этом формируются критерии оценки по всем заданиям. Таким критериев при оценке каждого предмета от 3 до 5. Это обычно числа 0, 1, 2, 3 и Х – не приступал к выполнению задания.
- Затем по найденным критериям осуществляется их подсчет по каждой школе. Вместе одной пустой строки добавляются строки с критериями и подсчитывается их количество по каждому заданию по каждой школе. Строка с критериями помечается вместо номера строки словами Критерий 29.
- После этого просто ведется суммирование на отдельном листе Анализ всех найденных критериев по всем школам. Это осуществляется двумя способами для организации дополнительной проверки. Первый способ – простое программное суммирование , а второй – вставка формулы, причем формула формируется также программно.
- На последнем этапе ведется подсчет количества оценок, их процент от числа писавших, находится средняя оценка по школе и средний балл.
Программа выводит иного сообщений. Они чисто информационные и их можно в тексте закомментировать. Почему сделано так? Каждый модуль отлаживался отдельно. Данные минимально передаются через общие параметры или переменные. Это было сделано специально, но последовательность выполнения макросов должна быть жесткой, кроме подсчета оценок.
Макрос automat задает последовательность вызываемых модулей. По возможности с той же целью макросов давались имена по возрастанию. Модули можно запускать последовательно и отдельно.
Это опять же сделано с одной лишь целью, чтобы кто-то мог разобраться в программе более легко. Я просто привык писать проще и с целью обучения.
Какие проблемы, с которыми я столкнулся?
- Изначально в предоставляемых исходных данных на самом деле столбцов было гораздо больше –не 22 или 27, а 107. Просто они пустые. Поэтому лучше столбцы справа предварительно очистить. Проверить это всегда можно командой
Msgbox ActiveSheet.UsedRange.Columns.Count
Такой способ определения числа колонок в таблице мной использовался в нескольких модулях, в том числе и задании таблицы через Range. Поэтому число 107 может фигурировать в программе. При этом просто сформируются столбцы нулевых критериев.
Обойти это можно применением вместо
Col_End = ActiveSheet.UsedRange.Columns.Count команды
Col_End = Cells(1, 1).End(xlToRight).Column
В файле есть дополнительный макрос, запускаем всегда отдельно и по желанию. Это DeleteModule.
Этот макрос удаляет все макросы исполняемого файла, выводя перед этим предупреждения и сохраняет полученные результаты в новый файл Копия_Дата_…
Полученный файл не содержит макросов. Остаётся подправить его имя с учетом предмета и класса и передать пользователям
Файл ничем не защищён. Но для работы макроса удаления в Tools Referens должна быть добавлена позиция Microsoft Visual Basic for Application Extensilibity 5
Кроме этого у меня выделены позиции в Tools Referens:
Visual Basic for Application
Microsoft Excel 11.0 Object Library
Ole Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library
Есть у Вас есть вопросы, то пишите на адрес coozr1@yandex.ru
Файл с макросами в форматеExcel Office 2003
Предыдущий материал за май 2018 года