Человек
Сообщения: 3321
Благодарности: 105
|
Профиль
|
Отправить PM
| Цитировать
Vadikan
Как это вижу я:
1) Все экспортированные еженедельные данные лежат каждый в своем файле.
2) Кумулятивная таблица лежит в отдельном файле, где на первом листе сама таблица, а на втором - т.н. "защита от дурака" на случай, чтоб кто-нить не проссумировал одну и туже неделю несколько раз (об этом ниже, но можно и совсем без этого, просто опыт показывает, что будь ты хоть кем, но рано или поздно ошибки случаются).
3) Наш макрос делает следующее:
3.1)Открывает окно "открыть файл". Там пользователь выбирает файл с неделбным отчетом, который надо приплюсовать к годовой таблице.
3.2)Макрос находит первую строку с самими данными (если форма отчетов будет постоянной, то достаточно один раз ее определить и жестко забить в сам макрос, напр. в твоем примере это - 3).
3.3) Макрос берет из первой строчки индекс человека и ищет его куммулятивной таблице.
3.4а) В случае нахождения индекса он обновляет содержимое соответствующих ячеек прибавляя к ним данные из недельного отчета.
3.4б) Если индекс не находиться (в качестве флага конца таблици можно использовать достижение пустой ячейки в столбще индексов), то данные из недельного отчета записываются следующей строкой после последней на данный момент в кумулятивной таблице
* * Все. В данном виде должно работать как и при первом заполнении таблици так и при еженедельном суммировании, в том числе и при изменениях в составе персонала.
* * Теперь про защиту от дурака. Думаю будет не очень весело, если где-нить в конце года случайно вместо новой недели приплюсуешь старую. На этот случай можно вести в отдельно листе список файлов, уже внесенных в таблицу. Тогда при попытке добавить очередной отчет макром еще должен проверять наличие имени файла в данном списке с выдачей предупреждения в случае нахождения соответствия. Если же все-же надо повторно приплюсовать некий файл (например после ручных правок или дополнительного макроса, делающего откат на для конкретного недельного отчета) достаточно просто удалить его имя из списка.
* * * Это довольно подробный алгоритм. Непосредственно с кодом не могу щас помочь - зашиваюсь, но любой кто хоть немного знаком с VBA и/или умеет пользоваться хелпом по нему может накидать его тебе...
|
-------
Будь проще...
Отправлено: 16:59, 27-09-2004
| #190
|