|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
03.07.2008, 14:44 | #11 | |
Пользователь
Регистрация: 02.07.2008
Сообщений: 15
|
SAS888, интересует любой способ выполнения данной задачи. желательно средствами экселя.
вложение посмотрел, работает. возник вопрос, сам на вба никогда не писал, поэтому если не сложно, объясните принцип действия. первые пять сумм он рассчитывает правильно и вносит их в ячейки D2, E2, F2, G2, H2 соответственно тоже верно. а если у нас будет дат, скажем не 5 (с января по май), а 12 (январь-декабрь) - то сможет ли он заполнить ячейки D2-O2, при наличии исходных данных в той же папке что и файл "суммы хлс"? второе, каким образом будут рассчитаны ячейки D3-O3, после повторного нажатия на кнопку "выполнить"? Цитата:
имеем папку задание (аля папка икс). в ней две подпапки: Сбербанк и Авангард (ячейки B2, B3 файла суммы хлс) и файл "суммы хлс". в каждой подпаке папки "Задание" (в данном случае Сбербанк и Авангард) возможно наличие от 1 до 12 файлов в формате "1.xls, 2.xls ... 12.xls". сейчас имеем в папке авангард три файла (1-3), в папке сбербанк 5 файлов (1-5). номера счетов и колонки итого в двух папках разные: Сбербанк - "номер счета" по столбу А, "итого" по столбу М; Авангард - "номер счета" по столбу В, "итого" считаем по столбу D (пассив). требуется: по нажатия кнопки "выполнить" в файле "суммы.xls" идет проверка столба B. если значение ячейки не пустое, то берем его и ищем в папке "Задание" подпаку имя которой равно взятому текстовому значению, рассчитываем суммы и заполняем ячейки D2-O2 суммами. при это если ячейку заполнить не сможем, т.е. нет исходных данных, оставляем ее пустой. далее переходим к следущей ячейки по столбу В. так же каждый раз при нажатии кнопки выполнить проверяем все по новой. например в папку сбербанк мы добавим два файла (6.xls, 7.xls) и мы сможем заполнить ячейки I2, J2 файла "суммы.xls". или же при нажатии кнопки "выполнить" B4 уже будет равно ВТБ24, тогда ищем в папке "Задание" подпапку ВТБ24 и заполняем D4-O4 получается что-то вроде обновляемой базы данных |
|
03.07.2008, 14:58 | #12 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1) Количество обрабатываемых файлов - любое.
2) В папке "Авангард" - один формат (организация столбцов) данных, в папке "Сбербанк" - другой. Вы это описали и все ясно. А если есть еще какие-нибудь другие строки (имена подпапок), тогда что? P.S. Опишите по-подробнее, сделаю завтра утром. У меня "ранний" часовой пояс.
Чем шире угол зрения, тем он тупее.
|
03.07.2008, 15:32 | #13 |
Пользователь
Регистрация: 02.07.2008
Сообщений: 15
|
так как суммы, которые требуется просчитать ясны, попробую объяснить на готовом примере. открываем файл "суммы.xls" и нажимаем кнопку "выполнить" (в него еще надо прикрутить алгоритм от SAS888, а как - не знаю). у нас должно получиться следующее (см. скрин 1)
далее заходим в папку "доп. материалы" и подпапку "азимут" копируем в папку "Задание". так же переносим файл 6.xls (доп. материал\Сбербанк) в "Задание\Сбербанк" далее в файле "суммы.xls" заполняем B4 = Азимут и нажимаем выполнить еще раз. что должно полчиться см. крин 2. на нем выделены те ячейки, которые должны просчитаться после повторного нажатия на "выполнить" примечание: в банке авангард я взял суммы "с потолка", те. сам их не считал. так же иногда попадаются значения, первые три цифры которого ранвы "423" или "426". поэтому неплохо было бы организовать проверку на количество символов, их должно быть 5 Последний раз редактировалось AZaharov; 03.07.2008 в 20:11. |
04.07.2008, 09:48 | #14 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите мое решение. Алгоритм обработки файлов для упрощения несколько изменен. Сначала из папки "доп. материал" данные добавляются в основную папку (если папка с таким именем уже существует, то в нее добавляются отсутствующие файлы. Если такой папки нет - она копируется целиком). Затем все папки обрабатываются в общем порядке. К сожалению, Вы так и не уточнили, как организованы данные в той или иной папке. Посмотрев организацию столбцов в разных папках, пока я сделал так, что файлы папки "Сбербанк" обрабатываются по одним правилам, а все остальные по другим (я имею ввиду номера столбцов для поиска). По окончании обработки, содержимое папки "доп. материал" уничтожается (за дальнейшей ненадобностью). Также добавлен контроль количества символов (5) искомых значений.
ВАЖНО: 1) Все папки для обработки и рабочий файл должны находиться в одной директории. 2) Папку "доп. материал" переименовывать нельзя. P.S. Если Вы будете не копировать файл, а переносить код макроса, то в своей книге необходимо подключить библиотеку "Microsoft Scripting Runtime". Это делается в VBE -> Tools -> References (поставить "птичку").
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 04.07.2008 в 09:51. |
04.07.2008, 22:09 | #15 | ||
Пользователь
Регистрация: 02.07.2008
Сообщений: 15
|
работает, но насколько корректно пока не выяснил. то ли руки у меня кривые, то ли я с бодуна не так что делаю. итак, в ходе тестовых испытаний выявил следущие "непонятки":
1. корректно ли работает алгоритм с проблемами в иманах у папок? сейчас привез новую стопку материала, который нужно просчитать, опробовал на нем. продолжаю тестирования, пока не все гладко 2. возможно ли сделать привязку по имени файла к столбу, в который будет записан результат? например имя файла "01.xls" соответствует январю (столб Е файла "суммы.xls") "02.xls" - февраль, "11.xls" - ноябрь и так далее. почему это нужно? если в папке к примеру "Авангард" будет лежать файл "05.xls", суммы в котором будут расчитаны для мая и при этом более никаких расчетов до этого не встречалось по данному банку, то алгоритм вписывает данные в столб D, вместо H. 3. насколько позволяют понять мои поверхностные знания написанного алгоритма, то если заменить в строчках: Цитата:
Цитата:
4. не совсем понял как переносить макрос из одной файла в другой, ну да ладно, это сам додумаю. разбор полетов производил путем замены файлов 5. при отсутствии папки "доп. материал" после выполнения расчетов удаляются все файлы кроме "суммы.xls". оке, значит папка должна быть, пускай и пустая 6. неопознанное явление. берем ваше последнее приложение и временно освобождаем папку "доп. материал". запускаем "суммы.xls", расчитываем - ок, все правильно. возвращаем на место то, что убирали из "доп. материал", делаем повторный расчет. ок, опять все правильно. но если взять из папки "Сбербанк" любой файл (например 1.хлс) и перенести его, скажем, в "Авангард" с заменой, то вместо расчета за январь получим пустую ячейку D1. это связано с тем, что имя папки не равно "Сбербанк'у"? если да, то я далее опишу сколько всего форм, по которым происходят расчеты. 7. организация данных. выяснилось, что все эти данные берутся вот отсюда и пожоже встречается всего два вида таблиц. если "Данные оборотной ведомости по счетам бухгалтерского учета (форма 101), включая обороты", то форма одна ("форма с оборотами.xls" в приложении). еже ли "Данные оборотной ведомости по счетам бухгалтерского учета (форма 101), без оборотов" то форма другая ("форма без оборотов.xls" в приложении). отсюда получается, что всего расчеты идут двумяспособами либо "счет" в строке А, "итог" по строке М (как у Сбербанка, например), иначе "счет" в строке В, "итог" по строке D (пример - Азимут). отсюда вопрос, возможно ли написание алгоритма который сам ищет столб, в котором есть значение "423хх" или "426хх", а суммирует, получается, по последнему столбу. в данных двух случаях либо М, либо D? сами же значения которые мы ищем (423хх, 426хх), как я понимаю, можно заменить в макросе. на этом пока все, продолжаю испытания. обновление: во вложении "баг" по идее должно все считаться, но вместо этого в "Запсибкомбанк" и "Металлинвестбанк" считает только за 3 месяц, при том неверно. это как раз те случаи, когда встретились случаи с числами на "423хх" и "426хх", не имеющие отношения к столбу "счет". там получается, что всеусловия выполняются 3 первые цирфы "423/426" и их количество равно 5. так же в тексте они идут первее "правильных" ячеек Последний раз редактировалось AZaharov; 05.07.2008 в 01:46. |
||
05.07.2008, 13:23 | #16 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите вложение. Осуществлены привязка имен файлов в папках банков к столбцам по месяцам в файле "суммы.xls", а так же автоматическое распознавание формы бух. учета.
По поводу папки "доп. материалы" я уже говорил, что она обязана присутствовать. Если требуется ее переименовать - в коде макроса потребуется изменить имя папки в трех местах: там, где Вы говорили, и еще в конце кода макроса, где осуществляется "очистка" этой папки. Все файлы в папках банков должны иметь имена: "1.xls", "2.xls", ..., "12.xls", т.е. по месяцам. Проверка на "правильность" имен файлов отсутствует. (если таковая необходима - то это отдельный разговор). После переноса макроса в другой файл, будет необходимо зайти в Visual Basic Editor, войти в меню Tolls на стандартной панели, выбрать References. Появится окно References-VBAProject. В этом окне найти библиотеку Microsoft Scripting Runtime, поставить "птичку" и нажать ОК.
Чем шире угол зрения, тем он тупее.
|
05.07.2008, 22:59 | #17 |
Пользователь
Регистрация: 02.07.2008
Сообщений: 15
|
работает корректно на всем, кроме одного - не может правильно расчитать, если "423" или "426" стоят слева в числе. то есть в столбе сумма находит первым число вида хх423\хх426. вложение прилагается
пысы как поменять расположение кнопки "выполнить"? |
07.07.2008, 05:01 | #18 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1) Не понял вопроса. В прилагаемом примере нет ни одного значения, удовлетворяющего условию поиска (423хх или 426хх в столбце "Номер счета 2-го порядка"). После выполнения макроса, получаем пустую строку для банка "БНП Париба". Что есть правильно.
2) Расположение кнопки можно поменять так: Открыть панель "Вид -> Панели инструментов -> Visual Basic". Выбрать "Режим конструктора". Теперь можно мышкой перемещать (изменять размеры) элемент управления "Кнопка". По окончании Ваших манипуляций - выйти из "Режима конструктора".
Чем шире угол зрения, тем он тупее.
|
07.07.2008, 06:50 | #19 |
Пользователь
Регистрация: 02.07.2008
Сообщений: 15
|
хммм, похоже действительно баг. на этом тогда все, благодарю премного!
|
17.10.2008, 12:22 | #20 |
Регистрация: 17.10.2008
Сообщений: 7
|
хэлпните мне плиз
Уважаемые Джадаи, хэлпните мне плиз.
Я в VBA зелёный, а очень уж нужно выполнить такую выборку. есть перечень условных счетов с условными остатками на них, нужно просумировать эти остатки по выбраных счетах. к примеру: деньги в банках: 1500%, 1502%, 1510%, 1512%, 1515-1517, 1521-1527, 1580-1582, 1589%, 1600% ценные бумаги рефинансирования: 1400-1407, 1410-1417, 1420-1424, 1426, 1427, 1430, 1435-1437, 1440, 1446, 1447 П.С. Про функцию =БДСУММ() я знаю. Последний раз редактировалось ZLOdeev; 17.10.2008 в 12:37. Причина: загрузка файла |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление не нужных знаков после запятой. | Alar | Общие вопросы Delphi | 4 | 31.05.2012 19:59 |
выборка предыдущих значений(курсы валют)) | alehandro | Microsoft Office Access | 1 | 29.04.2008 23:57 |
Выборка уникальных значений | Mary_star | SQL, базы данных | 9 | 11.02.2008 22:46 |
Выборка значений ячеек DBGrid | Македонский | БД в Delphi | 3 | 05.12.2007 07:10 |
графический вывод значений массива | vitalik007 | Помощь студентам | 6 | 21.10.2007 20:34 |