Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Название темы включает слова - "Помогите", "Спасите", "Срочно"
Название темы не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте >>>правила <<< и заново правильно создайте тему.
 
Опции темы
Старый 03.07.2008, 14:44   #11
AZaharov
Пользователь
 
Регистрация: 02.07.2008
Сообщений: 15
Репутация: 10
По умолчанию

SAS888, интересует любой способ выполнения данной задачи. желательно средствами экселя.

вложение посмотрел, работает. возник вопрос, сам на вба никогда не писал, поэтому если не сложно, объясните принцип

действия. первые пять сумм он рассчитывает правильно и вносит их в ячейки D2, E2, F2, G2, H2 соответственно тоже

верно. а если у нас будет дат, скажем не 5 (с января по май), а 12 (январь-декабрь) - то сможет ли он заполнить

ячейки D2-O2, при наличии исходных данных в той же папке что и файл "суммы хлс"?

второе, каким образом будут рассчитаны ячейки D3-O3, после повторного нажатия на кнопку "выполнить"?

Цитата:
чтобы не переделывать несколько раз, приведите пример результата, который необходимо получить. И как задавать

путь и имя папки "Икс"? Через запрос в стандартном окне, или эти параметры будут фиксированы (т.е. вставить в код

макроса).
Задали, например, папку "Икс", в ней нашли подпапку с именем, соответствующим значению ячейки "B2" и ... А в какой

файл этой подпапки записывать полученные данные?
пример:
имеем папку задание (аля папка икс). в ней две подпапки: Сбербанк и Авангард (ячейки 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

получается что-то вроде обновляемой базы данных
Вложения
Тип файла: rar Задание.rar (142.1 Кб, 12 просмотров)
AZaharov вне форума  
Старый 03.07.2008, 14:58   #12
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

1) Количество обрабатываемых файлов - любое.
2) В папке "Авангард" - один формат (организация столбцов) данных, в папке "Сбербанк" - другой. Вы это описали и все ясно. А если есть еще какие-нибудь другие строки (имена подпапок), тогда что?
P.S. Опишите по-подробнее, сделаю завтра утром. У меня "ранний" часовой пояс.
SAS888 вне форума  
Старый 03.07.2008, 15:32   #13
AZaharov
Пользователь
 
Регистрация: 02.07.2008
Сообщений: 15
Репутация: 10
По умолчанию

так как суммы, которые требуется просчитать ясны, попробую объяснить на готовом примере. открываем файл "суммы.xls" и нажимаем кнопку "выполнить" (в него еще надо прикрутить алгоритм от SAS888, а как - не знаю). у нас должно получиться следующее (см. скрин 1)

далее заходим в папку "доп. материалы" и подпапку "азимут" копируем в папку "Задание". так же переносим файл 6.xls (доп. материал\Сбербанк) в "Задание\Сбербанк"

далее в файле "суммы.xls" заполняем B4 = Азимут и нажимаем выполнить еще раз. что должно полчиться см. крин 2. на нем выделены те ячейки, которые должны просчитаться после повторного нажатия на "выполнить"

примечание: в банке авангард я взял суммы "с потолка", те. сам их не считал. так же иногда попадаются значения, первые три цифры которого ранвы "423" или "426". поэтому неплохо было бы организовать проверку на количество символов, их должно быть 5
Миниатюры
Нажмите на изображение для увеличения
Название: скрин1.jpg
Просмотров: 83
Размер:	15.6 Кб
ID:	4673   Нажмите на изображение для увеличения
Название: скрин2.jpg
Просмотров: 70
Размер:	17.7 Кб
ID:	4674  
Вложения
Тип файла: rar Задание.rar (215.2 Кб, 10 просмотров)

Последний раз редактировалось AZaharov; 03.07.2008 в 20:11.
AZaharov вне форума  
Старый 04.07.2008, 09:48   #14
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

Посмотрите мое решение. Алгоритм обработки файлов для упрощения несколько изменен. Сначала из папки "доп. материал" данные добавляются в основную папку (если папка с таким именем уже существует, то в нее добавляются отсутствующие файлы. Если такой папки нет - она копируется целиком). Затем все папки обрабатываются в общем порядке. К сожалению, Вы так и не уточнили, как организованы данные в той или иной папке. Посмотрев организацию столбцов в разных папках, пока я сделал так, что файлы папки "Сбербанк" обрабатываются по одним правилам, а все остальные по другим (я имею ввиду номера столбцов для поиска). По окончании обработки, содержимое папки "доп. материал" уничтожается (за дальнейшей ненадобностью). Также добавлен контроль количества символов (5) искомых значений.
ВАЖНО:
1) Все папки для обработки и рабочий файл должны находиться в одной директории.
2) Папку "доп. материал" переименовывать нельзя.

P.S. Если Вы будете не копировать файл, а переносить код макроса, то в своей книге необходимо подключить библиотеку "Microsoft Scripting Runtime". Это делается в VBE -> Tools -> References (поставить "птичку").
Вложения
Тип файла: rar Задание.rar (197.0 Кб, 16 просмотров)

Последний раз редактировалось SAS888; 04.07.2008 в 09:51.
SAS888 вне форума  
Старый 04.07.2008, 22:09   #15
AZaharov
Пользователь
 
Регистрация: 02.07.2008
Сообщений: 15
Репутация: 10
По умолчанию

работает, но насколько корректно пока не выяснил. то ли руки у меня кривые, то ли я с бодуна не так что делаю. итак, в ходе тестовых испытаний выявил следущие "непонятки":
1. корректно ли работает алгоритм с проблемами в иманах у папок? сейчас привез новую стопку материала, который нужно просчитать, опробовал на нем. продолжаю тестирования, пока не все гладко

2. возможно ли сделать привязку по имени файла к столбу, в который будет записан результат? например имя файла "01.xls" соответствует январю (столб Е файла "суммы.xls") "02.xls" - февраль, "11.xls" - ноябрь и так далее. почему это нужно? если в папке к примеру "Авангард" будет лежать файл "05.xls", суммы в котором будут расчитаны для мая и при этом более никаких расчетов до этого не встречалось по данному банку, то алгоритм вписывает данные в столб D, вместо H.

3. насколько позволяют понять мои поверхностные знания написанного алгоритма, то если заменить в строчках:
Цитата:
If a(UBound(a)) <> "доп. материал" Then _
и
Цитата:
Set f = fso.GetFolder(ThisWorkbook.Path & Application.PathSeparator & "доп. материал")
"доп. материал" на иное, то проверка новых исходных данных будет проверяться там?

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. так же в тексте они идут первее "правильных" ячеек
Вложения
Тип файла: rar приложение.rar (32.6 Кб, 12 просмотров)
Тип файла: rar баг.rar (471.7 Кб, 12 просмотров)

Последний раз редактировалось AZaharov; 05.07.2008 в 01:46.
AZaharov вне форума  
Старый 05.07.2008, 13:23   #16
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

Посмотрите вложение. Осуществлены привязка имен файлов в папках банков к столбцам по месяцам в файле "суммы.xls", а так же автоматическое распознавание формы бух. учета.
По поводу папки "доп. материалы" я уже говорил, что она обязана присутствовать. Если требуется ее переименовать - в коде макроса потребуется изменить имя папки в трех местах: там, где Вы говорили, и еще в конце кода макроса, где осуществляется "очистка" этой папки.
Все файлы в папках банков должны иметь имена: "1.xls", "2.xls", ..., "12.xls", т.е. по месяцам. Проверка на "правильность" имен файлов отсутствует. (если таковая необходима - то это отдельный разговор).
После переноса макроса в другой файл, будет необходимо зайти в Visual Basic Editor, войти в меню Tolls на стандартной панели, выбрать References. Появится окно References-VBAProject. В этом окне найти библиотеку Microsoft Scripting Runtime, поставить "птичку" и нажать ОК.
Вложения
Тип файла: rar Не баг.rar (488.4 Кб, 20 просмотров)
SAS888 вне форума  
Старый 05.07.2008, 22:59   #17
AZaharov
Пользователь
 
Регистрация: 02.07.2008
Сообщений: 15
Репутация: 10
По умолчанию

работает корректно на всем, кроме одного - не может правильно расчитать, если "423" или "426" стоят слева в числе. то есть в столбе сумма находит первым число вида хх423\хх426. вложение прилагается

пысы как поменять расположение кнопки "выполнить"?
Вложения
Тип файла: rar баг 2.rar (52.4 Кб, 17 просмотров)
AZaharov вне форума  
Старый 07.07.2008, 05:01   #18
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,162
Репутация: 1127
По умолчанию

1) Не понял вопроса. В прилагаемом примере нет ни одного значения, удовлетворяющего условию поиска (423хх или 426хх в столбце "Номер счета 2-го порядка"). После выполнения макроса, получаем пустую строку для банка "БНП Париба". Что есть правильно.
2) Расположение кнопки можно поменять так:
Открыть панель "Вид -> Панели инструментов -> Visual Basic". Выбрать "Режим конструктора". Теперь можно мышкой перемещать (изменять размеры) элемент управления "Кнопка". По окончании Ваших манипуляций - выйти из "Режима конструктора".
SAS888 вне форума  
Старый 07.07.2008, 06:50   #19
AZaharov
Пользователь
 
Регистрация: 02.07.2008
Сообщений: 15
Репутация: 10
По умолчанию

хммм, похоже действительно баг. на этом тогда все, благодарю премного!
AZaharov вне форума  
Старый 17.10.2008, 12:22   #20
ZLOdeev
 
Регистрация: 17.10.2008
Сообщений: 7
Репутация: 10
Сообщение хэлпните мне плиз

Уважаемые Джадаи, хэлпните мне плиз.

Я в 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

П.С. Про функцию =БДСУММ() я знаю.
Вложения
Тип файла: rar Task.rar (9.7 Кб, 20 просмотров)

Последний раз редактировалось ZLOdeev; 17.10.2008 в 12:37. Причина: загрузка файла
ZLOdeev вне форума  
Закрытая тема

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление не нужных знаков после запятой. 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 23:46
Выборка значений ячеек DBGrid Македонский БД в Delphi 3 05.12.2007 08:10
графический вывод значений массива vitalik007 Помощь студентам 6 21.10.2007 20:34


21:38.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.