Всем доброго времени суток ! Сижу уже неделю нечего не выходит . Помогите составить Макрос, нужно автоматически копировать со страницы "Приходы" на страницу "Расход" все транзакции которые по колонке Нал.\Безнал. идут по категориям: Терминал,Расрочка\кредит. Исходный фал в приложении.
Option Explicit
Sub CopyIf()
With ActiveWorkbook.Sheets("Приходы")
Dim lrow, i, j As Long
lrow = .Cells(Rows.Count, 7).End(xlUp).Row
j = 2
For i = 2 To lrow
If .Range("G" & i) = "Терминал" Or .Range("G" & i) = "Расрочка\кредит" Then
.Range("G" & i).EntireRow.Copy ActiveWorkbook.Sheets("Расход").Range("A" & j)
j = j + 1
End If
Next i
End With
End Sub
Станислав Золин написал: нужно автоматически переносить со страницы "Приходы" на страницу "Расход" все транзакции которые по колонке Нал.\Безнал. дут по категориям: Терминал,Расрочка\кредит.
ничего из приведенного нет в примере - переносить нечего а так выше макрос переделанный от vokilook
Код
Option Explicit
Sub CopyIf()
With ActiveWorkbook.Sheets("Приходы")
Dim lrow, i, j As Long
lrow = .Cells(Rows.Count, 7).End(xlUp).Row
j = 2
For i = 2 To lrow
If .Range("E" & i) = "Терминал" Or .Range("E" & i) = "Расрочка\кредит" Then
.Range("E" & i).EntireRow.Copy ActiveWorkbook.Sheets("Расход").Range("A" & j)
j = j + 1
End If
Next i
End With
End Sub
Option Explicit
Sub CopyIf()
With ActiveWorkbook.Sheets("Приходы")
Dim lrow, i, j As Long
lrow = .Cells(Rows.Count, 7).End(xlUp).Row
j = 2
For i = 2 To lrow
If .Range("G" & i) = "Терминал" Or .Range("G" & i) = "Расрочка\кредит" Then
.Range("G" & i).EntireRow.Cut ActiveWorkbook.Sheets("Расход").Range("A" & j)
.Range("G" & i).EntireRow.Delete
j = j + 1
End If
Next i
End With
End Sub
Добавил одну строчку и все заработало !) Насколько я правильно сделал?
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With ActiveWorkbook.Sheets("Приходы")
Dim lrow, i, j As Long
lrow = .Cells(Rows.Count, 7).End(xlUp).Row
j = 2
For i = 2 To lrow
If .Range("G" & i) = "Терминал" Or .Range("G" & i) = "Расрочка\кредит" Then
.Range("G" & i).EntireRow.Copy ActiveWorkbook.Sheets("Расход").Range("A" & j)
j = j + 1
End If
Next i
End With
End Sub
Ну если заработало - значит правильно... Только надо иметь ввиду, то, что данные во вкладке "Расход" постоянно перезаписываются без удаления старых данных.
Как сделать что бы заполнение начиналось с новой строчки ?????
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With ActiveWorkbook.Sheets("Приходы")
Dim lrow, i, j As Long
lrow = .Cells(Rows.Count, 7).End(xlUp).Row
j = 2
For i = 2 To lrow
If .Range("G" & i) = "Терминал" Or .Range("G" & i) = "Расрочка\кредит" Then
.Range("G" & i).EntireRow.Copy ActiveWorkbook.Sheets("Расход").Range("A" & j)
j = j + 1
End If
Next i
End With
End Sub
)) сможете описать задачу - скорее всего и решение найдется, не сможете - решайте сами или ждите гадалок по опытнее меня, они угадают все что вам нужно и без рассказа о том, что же вам нужно. но только будьте внимательны, не думайте лишнего, они могут и пин-код от вашей карточки угадать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Попытаюсь еще раз описать задачу, строки которые переносяться со страницы Приход на страницу Расход не должны дублироваться . Сейчас внеся изменения написанные Ігор Гончаренко строки записываются каждый раз заново не учитывая те строки которые уже были записаны. Надеюсь на вашу помощь (