6. пока встречал только формулу итога.
Уверяю тебя, это не единственный возможный вариант. Например, если в K88 из твоего образца вставить
=SUMPRODUCT(K$2:K87;$B2:$B87=$B88;$C$2:$C87=$C88)
то это тоже будет "сумма всех чисел в столбце K, для которых MO=$B88 и УК=$C88"... Ясен пень, что работать она будет только если выбраны (заполнены) и тот и другой параметры, а у тебя они могут оставаться пустыми. Но это не важно, это только для примера.
7. просто в моём понятии отчет элементарен до невозможности, поэтому даже не задумывался об этом. с base что-то пробовал, но не подружился. не нашел, точнее, как пользователю разрешить только запуск нужной формы и ничего другого.
Там какой прикол - пользователь даже не будет знать о том, что Base каким-то боком участвует в печати отчета. Создаем базу данных, в качестве источника данных указываем лист из Калковской книги. Результат параметрического запроса размещаем на листе другой книги и дописываем к нему формулы суммирования, подписи и прочие украшательства. Об этой книге, которая для печати, не знает никто кроме исполнителя. И только она знает, что нужно открыть книгу, выбрать Данные-Обновить диапазон, ввести значения параметров (Base спросит) МО и УК и отправить на печать. То есть тетенька видит только Калк, Base втихаря шуршит на заднем плане.
8. Разрывы - это личная инициатива для разделения видов работ.
То есть, если их в печатной форме не будет, то это хорошо?
еще необходимо учесть, что пользователи - женщины 55-60 лет. Этому еле научил
Мои соболезнования... Знаю, что в такой ситуации проще сделать самому, чем "стопятьдесяттысячраз" объяснять всё с самого начала...
Вообще-то такой отчет можно замутить на одних Калковских формулах, вообще без макросов. Но раз уж ты эту тему поднял в бэйсике, предлагаю сделать такое:
1. Убираем подписи, формулы расчета итогов и колонку №п/п с Лист1 и переименовываем его в Данные.
2. На скрытом листе, как и предлагал
RFJ, сохраняем заготовку ОДНОЙ строки итогов и подписей.
3. На открытом, но защищенном листе, оставляем две незащищенных ячейки для ввода МО и УК для отчета. Сам лист форматируем как для печати.
4. При запуске макроса считываем значения тех двух ячеек, снимаем защиту с листа и очищаем данные (числа и строки, но не форматы) для всех ячеек ниже заголовка.
5. Получаем лист Данные (oSheets.getByName("Данные")), для него определяем последнюю заполненную ячейку.
6. Слизываем в массив все данные со второй строки по последнюю (getDataArray()).
7. Пробегаемся по полученному "массиву массивов" в цикле, сравниваем с критериями отбора и перепаковываем в новый "массив массивов", дополняя номерами по порядку.
8. Одним махом сбрасываем данные в уже отформатированный лист отчета.
9. Копируем подвал со строкой формул в стык к отобранным данным.
10. Переопределяем диапазон печати, восстанавливаем защиту листа...
Как-то так, в общем