Страницы: 1
RSS
Разработка макроса для переноса данных из трех сводных таблиц (по единой базе данных) с созданием отдельного файла для каждого варианта фильтрации с название организации
 
Не актуально

Добрый день.
Прошу рассмотреть ТЗ и дать предложения.
Из-за ограничений форума ссылка для скачивания файла примера и видео текущего процесса - 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
 
Какой хороший подход к постановке задачи
Не претендую
Страницы: 1
Читают тему
Наверх