Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание таблицы отслеживания движений по расчетному счету - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание таблицы отслеживания движений по расчетному счету (Макросы/Sub)
Создание таблицы отслеживания движений по расчетному счету
pjJohn Дата: Вторник, 23.09.2014, 16:08 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Возникла такая сложность, прошу у вас помощи.
Задача стояла такая: необходимо в файле Excel создать с помощью формулы/макроса таблицу, способную отражать обороты по расчетному счету по конкретным контрагентам.
Работать должно так: в таблицу Исходные данные заносится информация по операции: дата, наименование контрагента, наименование операции, приход/расход, комментарии, остаток на счете контрагента.
После нажатия кнопки запуска макроса происходит поиск листа с названием, соотв. названию организации контрагента.
Если такого листа нет - он создается и в него автоматически заносятся данные по этому контрагенту и операции.
Если такой лист уже есть, то в нем создается еще одна строчка к уже имеющимся с конкретно этой операцией, после чего остаток на счете конктрагента обновляется в зависимости от прихода/расхода по операции. Хочу обратить внимание, что остаток может быть отрицательным, это нужно для отслеживания взаиморасчета.
http://www.excelworld.ru/forum/2-4113-1
Здесь я нашел макрос, позволяющий создавать листы с названием контрагентов, перечисленных в исходных данных

[vba]
Код
Sub Итог()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("Исходные данные").Range("B" & Rows.Count).End(xlUp).Row
             On Error Resume Next
             Sheets(Sheets("Исходные данные").Range("B" & i).Value).Select
             If Err And Sheets("Исходные данные").Range("B" & i) <> "" Then
                 'Sheets.Add After:=Sheets(Sheets.Count)
                 Sheets("ШАБЛОН").Copy After:=Sheets(Sheets.Count)
                 ActiveSheet.Name = Sheets("Исходные данные").Range("B" & i)
             End If
Next i
Worksheets("Исходные данные").Activate
Application.ScreenUpdating = True
End Sub
[/vba]

После этого была предпринята скромная попытка с помощью
Код
=ЕСЛИ(ЕНД(ВПР
подхватывать данные из исходного листа.
Попытка не увенчалась успехом, потому что данные подхватывались исходя из первой операции по контрагенту. А в случае внесения изменений в операцию на исходном листе, эти изменения не применялись к уже созданным листам организаций.

Здесь я нашел более приближенный макрос, но результат, который им достигается имеет немного иную структуру
http://www.excelworld.ru/forum/10-5306-1

Буду очень признателен за любую помощь в решении этой сложности.
Извините, если описание проблемы получилось сумбурное, готов дать максимально развернутые ответы на ваши уточняющие вопросы.
Заранее спасибо и хорошего дня!:)
К сообщению приложен файл: 9327707.xlsm (55.3 Kb)


Сообщение отредактировал pjJohn - Вторник, 23.09.2014, 16:15
 
Ответить
СообщениеДобрый день!
Возникла такая сложность, прошу у вас помощи.
Задача стояла такая: необходимо в файле Excel создать с помощью формулы/макроса таблицу, способную отражать обороты по расчетному счету по конкретным контрагентам.
Работать должно так: в таблицу Исходные данные заносится информация по операции: дата, наименование контрагента, наименование операции, приход/расход, комментарии, остаток на счете контрагента.
После нажатия кнопки запуска макроса происходит поиск листа с названием, соотв. названию организации контрагента.
Если такого листа нет - он создается и в него автоматически заносятся данные по этому контрагенту и операции.
Если такой лист уже есть, то в нем создается еще одна строчка к уже имеющимся с конкретно этой операцией, после чего остаток на счете конктрагента обновляется в зависимости от прихода/расхода по операции. Хочу обратить внимание, что остаток может быть отрицательным, это нужно для отслеживания взаиморасчета.
http://www.excelworld.ru/forum/2-4113-1
Здесь я нашел макрос, позволяющий создавать листы с названием контрагентов, перечисленных в исходных данных

[vba]
Код
Sub Итог()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("Исходные данные").Range("B" & Rows.Count).End(xlUp).Row
             On Error Resume Next
             Sheets(Sheets("Исходные данные").Range("B" & i).Value).Select
             If Err And Sheets("Исходные данные").Range("B" & i) <> "" Then
                 'Sheets.Add After:=Sheets(Sheets.Count)
                 Sheets("ШАБЛОН").Copy After:=Sheets(Sheets.Count)
                 ActiveSheet.Name = Sheets("Исходные данные").Range("B" & i)
             End If
Next i
Worksheets("Исходные данные").Activate
Application.ScreenUpdating = True
End Sub
[/vba]

После этого была предпринята скромная попытка с помощью
Код
=ЕСЛИ(ЕНД(ВПР
подхватывать данные из исходного листа.
Попытка не увенчалась успехом, потому что данные подхватывались исходя из первой операции по контрагенту. А в случае внесения изменений в операцию на исходном листе, эти изменения не применялись к уже созданным листам организаций.

Здесь я нашел более приближенный макрос, но результат, который им достигается имеет немного иную структуру
http://www.excelworld.ru/forum/10-5306-1

Буду очень признателен за любую помощь в решении этой сложности.
Извините, если описание проблемы получилось сумбурное, готов дать максимально развернутые ответы на ваши уточняющие вопросы.
Заранее спасибо и хорошего дня!:)

Автор - pjJohn
Дата добавления - 23.09.2014 в 16:08
Wasilich Дата: Среда, 24.09.2014, 03:24 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Задача не сложная но, у нее много условий и она требует много проверок.
Предлагаю простой пример по заданию, требующий нажатия кнопки после записи каждой строки. Но при повторном нажатии запишет повторно. Значит нужна проверка - есть уже такая запись или нет и т. д. Кроме того, малейшая неточность в написании наименования контрагента будет воспринято как новый.
То есть, что бы учесть все варианты и условия не допускающие ошибок, надо посидеть. А это время. А у меня его пока мало.
Короче, пример для размышления, дерзайте. Может кто еще варианты предложит.
А может и законченное решение.
К сообщению приложен файл: pjJohn2.xls (25.5 Kb)


Сообщение отредактировал Wasilic - Среда, 24.09.2014, 03:25
 
Ответить
СообщениеЗадача не сложная но, у нее много условий и она требует много проверок.
Предлагаю простой пример по заданию, требующий нажатия кнопки после записи каждой строки. Но при повторном нажатии запишет повторно. Значит нужна проверка - есть уже такая запись или нет и т. д. Кроме того, малейшая неточность в написании наименования контрагента будет воспринято как новый.
То есть, что бы учесть все варианты и условия не допускающие ошибок, надо посидеть. А это время. А у меня его пока мало.
Короче, пример для размышления, дерзайте. Может кто еще варианты предложит.
А может и законченное решение.

Автор - Wasilich
Дата добавления - 24.09.2014 в 03:24
pjJohn Дата: Среда, 24.09.2014, 13:12 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, спасибо большое! Работает всё замечательно!
По поводу ошибок в написании контрагента - это не страшно, будет заметно при допущении ошибки
Вот с повторными записями буду стараться бороться по вашему совету, с помощью добавления проверок, если получится..
Спасибо!
К сообщению приложен файл: 2453102.xls (35.0 Kb)
 
Ответить
СообщениеWasilic, спасибо большое! Работает всё замечательно!
По поводу ошибок в написании контрагента - это не страшно, будет заметно при допущении ошибки
Вот с повторными записями буду стараться бороться по вашему совету, с помощью добавления проверок, если получится..
Спасибо!

Автор - pjJohn
Дата добавления - 24.09.2014 в 13:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание таблицы отслеживания движений по расчетному счету (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!