Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2016, 03:28   #1
kaasin
Новичок
Джуниор
 
Регистрация: 12.02.2016
Сообщений: 1
По умолчанию Копирование строк в разные листы книги по значению ячейки в столбце

Здравствуйте,

Есть таблица, где в Лист1 ведется учет хранения одного вида продукции разными клиентами, нужно, чтобы при вводе в колонку "Контрагент" (D), вся строка (27 ячеек), не зависимо от того, все ли ячейки заполнены, переносилась на лист данного клиента в последнюю незаполненную строку.

То есть вводим id товара, место хранения, дату поступления, кем принят и т.д. (остаются свободны ячейки с датой выдачи, кому выдан и т.д), вводим наименование клиента (Клиент1) - строка перенеслась в Лист2 данного клиента на последнюю строку, вводим Клиент2 - строка переноситься в Лист3 на последнюю незаполненную строку.
В случае редактирования строки (внесения даты выдачи, кому выдан, удаления места хранения), изменения и вступают в силу на листе клиента.

Нашел только такое решение:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow As Long
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If Target = "Клиент1" Then
With Sheets("Лист2")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
If Application.WorksheetFunction.Count A(Range(Cells(Target.Row, 1), Cells(Target.Row, 27))) = 27 Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy
.Cells(LastRow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End With
End If
End If

If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("D:D")) Is Nothing Then
If Target = "Клиент2" Then
With Sheets("Лист3")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
If Application.WorksheetFunction.Count A(Range(Cells(Target.Row, 1), Cells(Target.Row, 27))) = 27 Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy
.Cells(LastRow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End With
End If
End If
End Sub

Но добавляет по примеру:

Лист1, 1 строка Клиент1 - переносит в Лист2 в стоку 1
Лист1, 2 строка Клиент2 - переносит в Лист3 в стоку 2
То есть в Лист3 первая строка остается пустой.

Подскажите пожалуйста решение, без Вас никогда не справиться с этой задачей.
kaasin вне форума Ответить с цитированием
Старый 12.02.2016, 09:00   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1. отформатируй код согласно правил
2. приложи какие-то файлы с разработками
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 12.02.2016, 09:33   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

дайте листам такие же имена как у контрагентов
тогда
вместо того, что написано у Вас можно использовать этот
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim LastRow As Long
  If Target.Cells.Count > 1 Then Exit Sub
  If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub
  On Error Resume Next
  If IsEmpty(Worksheets(Target).Cells(1)) Then LastRow = 1
  If Err Then Exit Sub
  With Worksheets(Target)
    Range(Cells(Target.Row, 1), Cells(Target.Row, 27)).Copy
    .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк с формулами в однотипные листы книги AlWin Microsoft Office Excel 2 19.11.2012 15:35
Копирование строки по значению в столбце maxpay Microsoft Office Excel 0 10.11.2012 18:49
Автоматичекое копирование/удаление строк по значению в столбце maxpay Microsoft Office Excel 1 10.11.2012 09:21
Копирование строк по условию в разные листы korsarqa Microsoft Office Excel 2 23.06.2012 20:51
Нахождение в столбце с числами строк, сумма чисел которых равна определенному значению KNatalia Microsoft Office Excel 2 16.09.2009 08:42