查找大于零的单元格值并复制到另一个工作表

时间:2016-05-21 09:18:37

标签: excel vba excel-vba

我想检查Col B单元格值是否大于零,如果是,我想将整行复制到另一个工作表。 我的代码如下所示,它可以工作,但我想改进它,因为我使用A65000进行硬编码。请告知如何检查Col B单元格,直到最后填写的数据。

Sub Search_Number()
    'copy row if cell greater than zero
    Dim i As Range

    Sheets("HVM").Select

    For Each i In Range("I:I")
        If i.Value > 0 Then
            i.Select
            ActiveCell.Rows("1:1").EntireRow.Select
            Selection.Copy
            Sheets("Blocked").Range("A65000").End(xlUp).Offset(1, 0).PasteSpecial

        End If
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

此代码检查sheet1中列b中的值是否大于0,并将整行复制到sheet2到a列中的第一个空行。此代码假定您没有标题行,并且数据从第1行开始,您希望整行粘贴到从第1行开始的另一个工作表。最后,此代码仅在sheet1是要从中复制的源时工作,而工作表2是要复印到的空白页。

Dim rng As Range
Dim cell As Range
Dim lr As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = Sheet1
Set ws2 = Sheet2

lr = ws1.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = ws1.Range("b1:b" & lr)

For Each cell In rng
  If cell.Value > 0 Then
    cell.EntireRow.Copy
    ws2.Select
    If ws2.Range("A1").Value = "" Then
      ws2.Range("a1").PasteSpecial xlPasteValues
    Else
      Cells((Cells(Rows.Count, "a").End(xlUp).Row) + 1, "a").PasteSpecial xlPasteValues
    End If
  End If
Next cell

Application.CutCopyMode = False
Range("A1").Select

End Sub