только вот как после этого в лист с соответствующей датой поставить значения строк
Igor_123 писал(а):а чем тебе макрос не нравится???
Автофильтром выбирать нужные данные, копировать, выбирать нужный лист и ячейку и вставлять, если без использования макроса
а зачем там цикл в 9 итераций?только вот как после этого в лист с соответствующей датой поставить значения строк
находи последнюю строку из скопированных, начало диапазона сделай равным А1 и копируй в нужный лист, после удаляй из временного листа. А?
да ещё и Do ... Loop без всяких условий, он хоть работает код из последнего поста или уходит в бесконецный цикл?
вот например, есть баланс за 3 дня месяца. Мне неоходимо взять из всего этого только 3 счета 20202, 30102,40702. затем из 20202 счета необходимо взять "входящий остаток актив" (180383,46) и поместить его в листе с номером 29 если это 29.12.2007 в ячейку С7, затем "дебет" в ячейку С9 тогоже листа, "Исходящий остаток актив" поместить в С10 29 листа, "кредит" поместить в ячейку G9 29 листа этой книги. затем счет 30102 "входящий актив" поместить на лист соответствующий дате если 29.12.2007 то на лист 29 в ячейку С11, "исходящий оборот дебет" поместить в ячейку С26, "кредит" этого счета поместить на лист 29 в ячейку G26. А со счета 40702 нужен только "дебет" и поместить его на лист если он относится к 29.12.2007 на лист 29 в ячейку G13. И так по каждому числу на соответствующий лист.
"Исходящий остаток актив", "кредит", "исходящий оборот дебет"
Option Explicit
' Здесь нужно проставить правильные значения столбцов, откуда брать данные
' и правильные значения адресов ячеек, куда разносить эти данные
Const colVhod_Ost_Aktive = 2
Const cellsVhod_Ost_Aktive = "C7"
Const colDebit = 3
Const cellsDebit = "С9"
Const colIshod_Ost_Aktive = 7
Const cellsIshod_Ost_Aktive = "C10"
Const colKredit = 5
Const cellsKredit = "G9"
Const colVhod_Aktive = 4
Const cellsVhod_Aktive = "C11"
Sub Macros()
Dim nDay As Long
Dim shBalans As Worksheet
Dim shDay As Worksheet
Dim CurRow As Long
CurRow = 2 ' Здесь нужно поставить номер первой строки с данными
Set shBalans = Sheets("Баланс за месяц")
Application.ScreenUpdating=False
Do
nDay = Day(CDate(cells(CurRow, 1).Value))
Set shDay = Sheets(CStr(nDay))
With shDay
.Range(cellsVhod_Ost_Aktive).Value = shBalans.cells(CurRow, colVhod_Ost_Aktive).Value
.Range(cellsDebit).Value = shBalans.cells(CurRow, colDebit).Value
.Range(cellsIshod_Ost_Aktive).Value = shBalans.cells(CurRow, colIshod_Ost_Aktive).Value
.Range(cellsKredit).Value = shBalans.cells(CurRow, colKredit).Value
.Range(cellsVhod_Aktive).Value = shBalans.cells(CurRow, colVhod_Aktive).Value
End With
CurRow = CurRow + 1
Loop While Len(Trim(CStr(cells(CurRow, 1).Value))) <> 0
Set shBalans = Nothing
Set shDay = Nothing
Application.ScreenUpdating = True
MsgBox "Закончили!"
End Sub
А со счета 40702 нужен только "дебет"
Igor_123 писал(а):вобщем вот небольшой пример, разбирайся:
- Код: Выделить всё
Option Explicit
' Здесь нужно проставить правильные значения столбцов, откуда брать данные
' и правильные значения адресов ячеек, куда разносить эти данные
Const colVhod_Ost_Aktive = 2
Const cellsVhod_Ost_Aktive = "C7"
Const colDebit = 3
Const cellsDebit = "С9"
Const colIshod_Ost_Aktive = 7
Const cellsIshod_Ost_Aktive = "C10"
Const colKredit = 5
Const cellsKredit = "G9"
Const colVhod_Aktive = 4
Const cellsVhod_Aktive = "C11"
Sub Macros()
Dim nDay As Long
Dim shBalans As Worksheet
Dim shDay As Worksheet
Dim CurRow As Long
CurRow = 2 ' Здесь нужно поставить номер первой строки с данными
Set shBalans = Sheets("Баланс за месяц")
Application.ScreenUpdating=False
Do
nDay = Day(CDate(cells(CurRow, 1).Value))
Set shDay = Sheets(CStr(nDay))
With shDay
.Range(cellsVhod_Ost_Aktive).Value = shBalans.cells(CurRow, colVhod_Ost_Aktive).Value
.Range(cellsDebit).Value = shBalans.cells(CurRow, colDebit).Value
.Range(cellsIshod_Ost_Aktive).Value = shBalans.cells(CurRow, colIshod_Ost_Aktive).Value
.Range(cellsKredit).Value = shBalans.cells(CurRow, colKredit).Value
.Range(cellsVhod_Aktive).Value = shBalans.cells(CurRow, colVhod_Aktive).Value
End With
CurRow = CurRow + 1
Loop While Len(Trim(CStr(cells(CurRow, 1).Value))) <> 0
Set shBalans = Nothing
Set shDay = Nothing
Application.ScreenUpdating = True
MsgBox "Закончили!"
End Sub
Дополниш константы остальными значениями интересующих тебя данных и в цикле добавиш строчки для добавленных констант.
И я не совсем, а точнее совсем не понял, почему:А со счета 40702 нужен только "дебет"
и чем он так примечателен. Такую логику уже нужно реализовывать внутри цикла условиями решая какие данные и куда переносить.
Ну и не помешает ( я бы даже сказал очень нужна ) обработка ошибок
Да и этот код нужно вставлять в отдельный модуль и вызывать из меню "Сервис" - "Макрос" - "Макросы..."
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 74