Не актуально
Добрый день.
Прошу рассмотреть ТЗ и дать предложения.
Из-за ограничений форума ссылка для скачивания файла примера и видео текущего процесса - 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. Дополнительные условия
- Макрос должен сохранять исходные данные без изменений.
- Логирование ошибок в отдельный файл (если возможно).
---
Изменено: - 04.07.2025 00:48:22