Разработка макроса для переноса данных из трех сводных таблиц (по единой базе данных) с созданием отдельного файла для каждого варианта фильтрации с название организации
Добрый день. Прошу рассмотреть ТЗ и дать предложения. Из-за ограничений форума ссылка для скачивания файла примера и видео текущего процесса - https:// disk. Если что-то внизу неточно - напишите.
Техническое задание (ТЗ) на разработку VBA-макроса для Excel --- # 1. Цель Автоматизация процесса фильтрации данных по организациям, сведение показателей и сохранение фильрации в отдельный файл. --- # 2. Текущий процесс пользователя 1. Выбор организации: Вручную применяет фильтр по столбцу выбирая одну организацию. 2. Фильтрация данных: Данные фильтруются по предустановленным критериям в срезах на листе "Слияние 1 мес". 3. Расчет показателей: - Количество исследований по каждой модальности берется в столбце N с листа "Слияние 1 мес"→ записывает в столбец D на листе «Приложение 1». внешнего файла. Название создаваемого файла должно совпадать с названием выбранной организации в срезе. Шапка файла формируется по отдельному шаблону (пример есть в каталоге \\3.Exports) - Номенклатура (организация) и количество исследований без дозы по модальности → записывает в столбец A и B на листе «Приложение 1» внешнего файла. 4. Сохранение файла: Сохраняет файл с именем выбранной организации. 5. Переход к следующей организации: Повторяет шаги 1-4 для новой организации. --- # 3. Требования к макросу ## 3.1. Входные данные. - Лист "Слияние 1 мес" с исходными данными по нескольким срезам одной базы данных: - Срез «Месяц заключения» и "Head MO" может изменяться - Столбец с названием организации при выборе в срезе выводится в → A, строка 25. (можно использовать для имени файла) Вывод во внешний файл - Лист «Приложение 1» создаваемый для сохранения данных в отдельном файле с перенесенными данными по выбранной МО:
Вид исследования
Число пустых полей, шт.
Доля от общего числа исследований, %
Общее число исследований, шт.
- Столбец А → переносится вид исследования взятый из столбца I (начиная со строки 10 и названием модальности) - Столбец B → количество исследований без дозы из листа "Слияние 1 мес" столбца B (со строки B10) по соответствующей модальности (например,КТ, ПЭТ итд те всех тех, что есть в предыдущем пункте начиная с I10 - Столбец C → расчет % от строки (например =B5/D5) в формате Х,Х% - Столбец D → данные по каждой модальности и общее количество исследований из столбца N листа с исходными данными Далее - на строке 13 шапка таблицы по шаблону
Головная медицинская организация
Медицинская организация
Модель аппарата
Вид исследования
Название исследования
Номер исследования в ЕРИС ЕМИАС
Статус исправления
(пример файла есть в каталоге \\3.Exports )
## 3.2. Логика работы макроса 1. Получить выбранную организацию: - Определить активный фильтр в столбце организаций (столбец A) или по срезу. - Если фильтр не применен → вывести ошибку: *«Организация не выбрана»*.
2. Применить фильтры и рассчитать показатели: - Общее количество исследований: Количество отфильтрованных строк (исключая заголовок). - Исследования без дозы определяются выбранными срезами на листе ": "Статус доз" -> "2.Еэфф не внесена" и "CCT CODE" -> 96094 3. Экспорт в лист «Приложение 1»: - Использовать шапку как в файла в папке //3.Exports/ - Записать данные: - Столбец A → название организации. - Столбец B строки с 5 по 10 → количество исследований без дозы. - Столбец D строки с 5 по 10 → общее количество исследований. - Столбец A по F со строки 14 → заполнение данными из листа с исходными данными по выбранной, Головная медицинская организация, Медицинская организация, Модель аппарата, Вид исследования, Название исследования, Номер исследования. - Сохранить структуру названия модальностей (КТ, ПЭТ итд) как было в листе исходных данные по столбцу I, при отсутствии данных без дозы оставлять "0" для количества исследований.
4. Сохранение файла: - Сохранить рабочую книгу с данными как: "Приложение 1 - [Название организации].xlsx" - Формат имени: Удалить запрещенные символы (например, “,”,\, /, *, ?). 5. Действия по фильтру по среза с Организацией: - не сбрасывая фильтр, дождаться через 10 секунд выбора новой организации и пройти по ней цикл снова. При этом более 1 раза не проходить цикл с уже выбранной организацией. ## 3.3. Выходные данные - Лист «Приложение 1» с добавленными данными, очищаемый и перезаписываемый новыми данными. - Отдельный файл Excel для каждой организации. --- # 4. Требования к обработке ошибок 1. Проверка активного фильтра: - Если фильтр не выбран → сообщение: *«Выберите организацию!»*. 2. Проверка листа «Приложение 1»: - Если лист отсутствует → создать автоматически. 3. Контроль дубликатов: - При сохранении файла, если имя существует → добавить суффикс (например, _1). --- # 5. Интеграция - Запуск макроса: Через кнопку на панели инструментов Excel, сочетание клавиш (например, Ctrl+Shift+R), в идеале вынести кнопку рядом со срезом МО --- # 6. Тестовые данные - Как на видеофрагменте и подкаталогах примеров по ссылке. --- # 7. Нефункциональные требования 1. Производительность: Обработка до 50 000 строк за ≤ 10 сек. 2. Совместимость: Excel 2016 и выше. --- # 8. Дополнительные условия - Макрос должен сохранять исходные данные без изменений. - Логирование ошибок в отдельный файл (если возможно). ---