Vba 将工作表2中的特定单词粘贴到工作表1中的数据下

Vba 将工作表2中的特定单词粘贴到工作表1中的数据下,vba,excel,worksheet,Vba,Excel,Worksheet,因此,我试图将工作表2中的数据粘贴到工作表1中的数据下,如果它在A列中有“New”一词 我有以下代码: Sub CopyRows() Dim ws1 As Worksheet, ws2 As Worksheet Dim bottomL As Integer Dim x As Integer Dim c As Range Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet2") botto

因此,我试图将工作表2中的数据粘贴到工作表1中的数据下,如果它在A列中有“New”一词

我有以下代码:

Sub CopyRows()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim bottomL As Integer
    Dim x As Integer
    Dim c As Range

    Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")
    bottomL = ws2.Range("A" & Rows.Count).End(xlUp).Row: x = 1

    For Each c In ws2.Range("A1:A" & bottomL)
        If c.Value = "New" Then
            c.EntireRow.Copy ws1.Range("A" & x)
            x = x + 1
        End If
    Next c

End Sub
但它会自上而下地粘贴工作表1中的数据,而不是粘贴到下面的下一个可用空白处


任何帮助都将不胜感激

您需要将
x
指定为第一张工作表的最后一行,然后将其递增:

Option Explicit

Sub CopyRows()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim bottomL As Long
    Dim x As Long
    Dim c As Range

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    bottomL = ws2.Range("A" & Rows.Count).End(xlUp).Row
    x = ws1.Range("A" & Rows.Count).End(xlUp).Row
    x = x + 1

    For Each c In ws2.Range("A1:A" & bottomL)
        If c.Value = "New" Then
            c.EntireRow.Copy ws1.Range("A" & x)
            x = x + 1
        End If
    Next c
End Sub

您需要将
x
指定为第一张工作表的最后一行,然后将其递增:

Option Explicit

Sub CopyRows()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim bottomL As Long
    Dim x As Long
    Dim c As Range

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    bottomL = ws2.Range("A" & Rows.Count).End(xlUp).Row
    x = ws1.Range("A" & Rows.Count).End(xlUp).Row
    x = x + 1

    For Each c In ws2.Range("A1:A" & bottomL)
        If c.Value = "New" Then
            c.EntireRow.Copy ws1.Range("A" & x)
            x = x + 1
        End If
    Next c
End Sub

因为每次都是从1开始迭代
x
。要粘贴到下一行-您需要计算工作表1的最后一行,类似于您对
bottomL
的计算


x=ws1.Range(“A”&Rows.Count)。End(xlUp)。Row+1

,因为您每次都从1开始迭代
x
。要粘贴到下一行-您需要计算工作表1的最后一行,类似于您对
bottomL
的计算


x=ws1.Range(“A”&Rows.Count).End(xlUp).行+1

在ws1.Range(“A”&x)中,x的值是1,这就是为什么它一直从上到下粘贴工作表1中的数据,而不是粘贴到下面的下一个可用空白点。您不需要使用x,只需粘贴到下一行即可
c.EntireRow.Copy ws1.Range(“A”&ws1.Cells(ws1.Rows.Count,“A”).End(xlUp.Row+1)
在ws1.Range(“A”&x)中,x的值为1,这就是为什么它会从上到下粘贴工作表1中的数据,而不是粘贴到下面的下一个可用空白点。您不需要使用x,只需粘贴到下一行即可
c.EntireRow.Copy ws1.Range(“A”和ws1.Cells(ws1.Rows.Count,“A”).End(xlUp).Row+1)
谢谢!很好用!非常感谢。很好用!