Как автоматически вставить новую строку в лист 2, когда новая строка вставлена ​​в лист 1, и скопировать значения? - PullRequest
0 голосов
/ 24 апреля 2019

Как сделать следующее: у меня есть 2 листа на одном листе, т.е.Лист 1 и Лист 2. Теперь я хочу вставить новую строку в Лист 1 и заполнить эти ячейки, и когда я вставляю эту строку, я хочу вставить эту же строку автоматически в Лист 2, но без некоторых столбцов.Я гуглил и искал много форумов и веб-сайтов, но не мог найти что-нибудь для работы.

Лист 1

Sheet 1

Лист 2

Sheet 2

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Вы можете использовать приведенный ниже код в листе 1.

Option Explicit
Dim Old_lines As Long, New_Lines As Long, Row_Number As Long
Dim PrNo As String, PrNa As String, R2 As String, R3 As String, R5 As String

Private Sub Worksheet_Change(ByVal Target As Range)

    With ThisWorkbook.Worksheets("Sheet1")

        New_Lines = .Cells(.Rows.Count, "A").End(xlUp).Row

        If Old_lines < New_Lines Then

            With Worksheets("Sheet2")
                .Rows(Row_Number).EntireRow.Insert
                .Range("A" & Row_Number).Formula = "=Sheet1!A" & Row_Number
                .Range("B" & Row_Number).Formula = "=Sheet1!B" & Row_Number
                .Range("C" & Row_Number).Formula = "=Sheet1!D" & Row_Number
                .Range("D" & Row_Number).Formula = "=Sheet1!E" & Row_Number
                .Range("E" & Row_Number).Formula = "=Sheet1!G" & Row_Number

            End With

        End If

    End With

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    With ThisWorkbook.Worksheets("Sheet1")

        Old_lines = .Cells(.Rows.Count, "A").End(xlUp).Row
        Row_Number = Target.Row

    End With

End Sub
0 голосов
/ 24 апреля 2019

Вы можете сделать это без VBA. Вместо VBA для дублирования данных используйте Power Query. Запросите данные из Sheet1 в качестве источника. Удалите столбцы, которые вам не нужны. Загрузите результат запроса в Sheet2.

Когда новые данные добавляются на Лист1, просто обновите запрос, щелкнув Данные> Обновить все.

Если вы хотите автоматизировать его с помощью VBA, используйте событие Worksheet_Change на Sheet1, которое эквивалентно Data> Refresh All. Макро-рекордер покажет вам необходимую команду.

Это может быть достигнуто простым нажатием нескольких кнопок ленты. Нет кодирования кошмаров. Данные не должны дублироваться.

Жизнь может быть простой. Многие вещи, которые были выполнимы только с VBA несколько лет назад, теперь выполнимы намного быстрее и намного проще с Power Query. Используйте современные технологии вместо устаревших концепций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...