将新行插入工作表1并复制值时,如何自动将新行插入工作表2?

时间:2019-04-24 08:16:23

标签: excel vba

如何执行以下操作: 我在一个工作表中有2张纸,即;工作表1和工作表2。 现在,我想在工作表1中插入新行并填充该单元格,当我插入该行时,我想将同一行自动插入工作表2中,但没有一些列。我在Google上搜索了很多论坛和网站,但找不到任何有用的东西。

第1张纸

Sheet 1

第2张纸

Sheet 2

2 个答案:

答案 0 :(得分:1)

您可以在工作表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

答案 1 :(得分:0)

您可以在没有任何VBA的情况下进行操作。代替VBA复制数据,请使用Power Query。查询Sheet1中的数据作为源。删除不需要的列。将查询结果加载到Sheet2中。

将新数据添加到Sheet1后,只需单击数据>全部刷新来刷新查询。

如果要使用VBA将其自动化,请在Sheet1上使用Worksheet_Change事件,该事件等效于“数据”>“全部刷新”。宏记录器将为您显示所需的命令。

这可以通过单击几个功能区按钮来实现。没有编码噩梦。数据不必重复。

生活可以很简单。几年前许多只能通过VBA进行的操作现在可以通过Power Query更快,更轻松地完成。使用当前技术代替过时的概念。