Перенос строк в разные книги по признаку., Нужен код для переноса с основной книги на другие. В зависимости от ключевой ячейки. Вернее код есть - нужно подправить.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Target.Column <> 20 Then Exit Sub
If Target <> 2 Then Exit Sub
Rows(Target.Row).Copy Destination:=Sheets("Лист2").Rows(Sheets("Лист2").Cells(Rows.Count, 20).End(xlUp).Row + 1)
End Sub
есть код , он переносит строку на лист2 когда в ячейке 20 стоит цифра 2 мне же нужно сделать так: когда стоит цифра 3 в ячейке 20 - то excel переносит данные на лист 3 . когда 4 , то на лист 4. И так далее. Я абсолютный нуб в кодах. Знающему человеку это наверняка минуту времени займет. а я уже мучаюсь довольно долго. Не могу заставить копировать на другие страницы.
да это имена листов. впоследствии я их переименую. то то есть у строки генератор 3 номер и этот код закинет строку "генератор" в лист "генератор" но как доработать код , чтобы он закинул в другой лист стартер
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Target.Column <> 7 Then Exit Sub
If Target <> 3 Then Exit Sub
Rows(Target.Row).Copy Destination:=Sheets("Генератор").Rows(Sheets("Генератор").Cells(Rows.Count, 20).End(xlUp).Row + 1)
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Target.Column <> 20 Then Exit Sub
If Target <> 2 Then Exit Sub
With Worksheets(CStr(Target.Value))
Rows(Target.Row).Copy .Rows(.Cells(.Rows.Count, 20).End(xlUp).Row + 1)
End With
End Sub
Как привязать другой лист , например "Стартер" к номеру 3 в ячейке 20 ? У меня получается привязка только к одному листу. Наверняка как то можно номер 4 в ячейке 20 привязать к листу "имя листа"
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Target.Column <> 7 Then Exit Sub
If Target <> 3 Then Exit Sub
Rows(Target.Row).Copy Destination:=Sheets("Генератор").Rows(Sheets("Генератор").Cells(Rows.Count, 20).End(xlUp).Row + 1)
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(20)) Is Nothing And Target.Count = 1 Then
Dim shName$, arrSh()
arrSh = Array("Генератор", "Трансформатор", "Стартер") 'массив ИМЕН листов в нужной последовательности
If IsNumeric(Target) Then
If Target <= Worksheets.Count And Target <= UBound(arrSh) + 1 Then
shName = Choose(Target.Value, arrSh(Target.Value - 1))
With Worksheets(shName)
Rows(Target.Row).Copy .Rows(.Cells(.Rows.Count, 20).End(xlUp).Row + 1)
End With
End If
End If
End If
End Sub
Изменено: Sanja - 09.05.2018 15:58:47(добавил проверок на соответствие значение ячейки кол-ву листов и прочее)
Согласие есть продукт при полном непротивлении сторон
Когда в столбец T вводится значение. например 2. Тогда строка копируется на лист - двигатели. если 1, то соответственно в Блок АБС Таблица большая у меня - столбцы до буквы Т заняты.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("T")) Is Nothing And Target.Count = 1 Then
Dim shName$, arrSh()
arrSh = Array("БЛОК ABS", "ДВИГАТЕЛЬ", "КАПОТ") 'массив ИМЕН листов в нужной последовательности
If IsNumeric(Target) Then
If Target <= Worksheets.Count And Target <= UBound(arrSh) + 1 Then
shName = arrSh(Target.Value - 1)
With Worksheets(shName)
Rows(Target.Row).Copy .Rows(.Cells(.Rows.Count, 20).End(xlUp).Row + 1)
End With
End If
End If
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
Проверил - работает. Огромное спасибо !!! Рядом с такими людьми чувствую себя каким то бездарным... А есть способы автоматического добавления "id" У меня трех уровневый зависимый список. Когда я выбираю например "ДВИГАТЕЛЬ" в столбце T сразу прописывало 2. И соответственно отправляла эту строку на лист ДВИГАТЕЛЬ
У меня в строке 19 позиций некоторые реализованы в виде зависимого списка. Допустим заполнил строку и поставив последнее значение в столбец T, отправил строку на нужный лист. Это то, что мне нужно. А какие есть ещё варианты ?