Отбор ячеек таблицы для суммирования

Автор karlos67, 10.07.2012, 10:43

« назад - далее »

karlos67

Добрый день! Прошу помощи по решению задачи.

Есть таблица с двумя столбцами, в первом номер балансового счета, во втором остаток на данном счете (см. файл). Эта таблица упрощенный вариант оборотной ведомости по счетам бухгалтерского учета банка (форма 0409101). Необходимо просуммировать остатки по группам счетов, в зависимости от вида операций. Например, остаток срочной задолженности по кредитам (счета 441*-457*), объем просроченной задолженности по кредитам (счета 458*), остаток средств населения (счета 40817-40820, 423*-426*), остаток средств юрлиц (счета 401*-408*, 410*-422*, 425*, 427*-440*) и так далее. Список счетов для суммирования формирую сам на основании положения по ведению бухгалтерского учета в банках.

Пока пользуюсь таким способом. Перечень счетов для каждой группы суммирования вношу в массив (счета перечисляю прямо в коде). Затем с помощью цикла for-next прохожу весь первый столбец  на совпадение с каждым счетом из массива. При совпадении счета из массива со счетом из первой колонки таблицы переменная summ(n) увеличивается на соответствующее значение из второй колонки таблицы.
Есть нюанс. Счетов в массиве больше чем в таблице, т.к. в массиве перечислены все возможные счета, а по факту банк оказывает ограниченный перечень операций и счета открыты не все.

Что хотелось бы:
1. Чтобы перечень счетов брался не из кода, а например из отдельного настроечного файла excel, в котором я буду перечислять счета для суммирования. Пробовал вносить счета в именованный диапазон, но конструкцию kr = Array(имя_диапазона) VBA не понимает или я что-то не так пишу.
2. Громоздкий код. Наверное можно как-то упростить, оставив в коде только один цикл, но не знаю как.

Спасибо!

nilem

Думал, будет интересный макрос, но все сделалось формулами. Облом  :)
Свел все счета из Вашего макроса на лист "счета" (обратите внимание на строки 39-42 - видимо, ошибка), а дальше ВПР и СУММЕСЛИ.

karlos67

nilem, спасибо за помощь и за то, что нашли ошибку :)
Но я не думаю, что такой вариант подойдет в моем случае. Проблема в том, что те, кто будут использовать Ваш способ знают эксель очень слабо. Они не смогут сами воспроизвести эти формулы и определить куда их вставлять.
Я представлял себе немного по другому. Существует эксель-файл, в котором содержится код для преобразования отчета. Также на листе в данном файле есть данные для настройки отчета (перечень счетов для группировок). Сам отчет выгружается из АБС. Пользователь открывает выгруженный отчет, открывает параллельно файл с кодом, нажимает кнопку и получает готовый результат.
В принципе я этого добился, но не смог только сделать код более компактным и сделать возможность выбора счетов из листа эксель. Ну еще там в примечаниях к коду есть отдельные вопросы...

nilem

Ну тогда примерно так, с кнопкой.
Код нах-ся в Модуль2.

karlos67

Интересный код. Спасибо, буду разбираться.