Страницы: 1
RSS
Автоматическое заполнение таблицы данными с другого листа, Есть таблица с данными на одном листе нужно автоматически заполнить таблицу на другом листе данными с первого листа, но вразброс
 
Добрый день, уважаемые эксперты!
Помогите пожалуйста.
Есть таблица с данными клиентов (она будет большая) на Листе1, нужно автоматически заполнить Лист2 определенными данными, (не всеми) с Листа1, но не подряд.
Т.е., например на Листе1 под порядковым номером 1 идет Иванов, а на Листе2 под порядковым номер 1 будет уже Петров. Я формулами прописала в примере, но строки заполняются только при вводе определенного порядкового номера с Листа1. Может есть какой-то макрос, который это сделает автоматически.

Буду очень благодарна за помощь.
 
Почему на листе 2 под порядковым номером 1 будет Петров?
 
Лист 2 будет заполняться по мере выполнения заказа, т.е. вначале регистрируют заказчика на Листе1, а на Листе2 будет уже выполнение, но может быть выполнен вначале заказ под номером 5, потом под номером 1 и т.д. Я смогла привязать только к порядковому номеру Листа1. Может можно как-то по другому решить этот вопрос?
 
В каком случае строка из листа 1 копируется на лист 2?
 
В случае выполнения заказа. Но на листе2 в первую строку может попасть заказчик с листа1 под порядковым номером, например 10, во вторую строку - с Листа1 под порядковым номером 3 и.т.д - хаотично, т.к. заказы выполняют разные люди. И таблица будет больше 1000 позиций,  
 
Не знаю, ли это вы имеете в виду или нет, но попробуйте:
Код
Option Explicit

Sub a_mashiny()
    Dim Lst1 As Worksheet, Lst2 As Worksheet, strkL1, strkL2&
    
    Application.ScreenUpdating = False
    Set Lst1 = ThisWorkbook.Sheets("List1")
    Set Lst2 = ThisWorkbook.Sheets("List2")
    
    With Lst2
        strkL2 = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        Do Until .Cells(strkL2, "J").Value = ""
            strkL1 = Application.Match(.Cells(strkL2, "J").Value, Lst1.Columns("A:A"), 0)
            If TypeName(strkL1) <> "Error" Then
                .Range("E" & strkL2 & ":H" & strkL2).Value = _
                    Array(List1.Range("F" & strkL1).Value, List1.Range("H" & strkL1).Value, _
                            List1.Range("I" & strkL1).Value, List1.Range("R" & strkL1).Value)
                
            End If
            strkL2 = strkL2 + 1
        Loop
        
        .Range("A2").Value = "1"
        .Range("A2:A" & strkL2 - 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
    End With
    
    Set Lst2 = Nothing
    Set Lst1 = Nothing
    Application.ScreenUpdating = True
End Sub
Макрос сопоставляет копированные данные с числами в столбце "J".
 
ОГРОМНОЕ СПАСИБО!!!! То что нужно  :)  
Страницы: 1
Наверх