使用第一张纸中的总行作为变量,将完整行从一张纸复制到另一张纸

时间:2017-09-13 15:52:34

标签: excel vba excel-vba

我想从一个工作表中复制行,然后在该逻辑循环中复制来自另一个工作表的行,这些行匹配从工作表1复制的行中的值。然后使用布尔值对第一个工作表的每一行重复此过程记录是否有任何行不匹配,并将这些行复制到第四张表。

然而,这还有一段距离。

最初我想将每张纸的每一行复制到第二张纸上。这是我的代码,但它只复制信息的第一行,如果第一行为空则停止。

这肯定会很简单,但我没有看到它。

Sub test()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Sheet1")

    Dim k As Long

    k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
    If k = 1048576 Then
        k = 1
    End If
    For i = 1 To sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
        Sheets("Sheet1").Rows(i).Copy Destination:= Sheets("Sheet3").Rows(i)
    Exit For
Next i

End Sub

2 个答案:

答案 0 :(得分:1)

听起来你有一些空行会让你绊倒.End(xlDown)将停在第一个空行。听起来你想要迭代直到最后一个可用记录。在这种情况下,通过从底部计算

来更改确定最后一行的方式

sh.Range(" A1048576&#34)。完(xlUp).Rows.Count

答案 1 :(得分:1)

只需删除Exit For即可。

Sub test()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")

Dim k As Long

k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
If k = 1048576 Then
    k = 1
End If
For i = 1 To sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
    Sheets("Sheet1").Rows(i).Copy Destination:=Sheets("Sheet3").Rows(i)
Next i
End Sub