遍历和复制/粘贴行VBA

时间:2018-07-28 10:37:32

标签: excel vba

我希望在xl VBA中编写一个简单的宏,该宏循环通过单元格A1:A100和;

  1. 查找值为“ HT”的每个单元格
  2. 复制整个行
  3. 选择工作表“记录”-转到A列的底部-粘贴复制的行
  4. 循环

这是我的尝试-我一直在努力使它起作用,并一直在使用各种不同的方法进行搜索,但似乎无法成功!

私有子CopyRow()

Dim i As Range
Sheets("Input").Select
Range("A1").Select

For Each i In Sheet9.Range("A2:A1000")
    Select Case i.Value
        Case "HT"
            Rows(ActiveCell.Row).Copy
            Sheets("Records").Select
            Range("A2").End(xlDown).PasteSpecial xlPasteValues
            Sheets("Input").Select

            Case Else

        End Select

    Next i

感谢您能给我的任何帮助!

3 个答案:

答案 0 :(得分:0)

我假设数据在“输入”工作表中,并且结果必须放入“记录”工作表中。我不知道您的解释对“ Sheet9”工作表的意义是什么。

这是一段简短的代码,可以满足您的需求:

Sub copy_HT_rows()

    Dim rng As Range
    Sheets("Input").Select
    Range("A1").Select

    For Each rng In Sheets("input").Range("A1:A100")
        If rng.Value = "HT" Then
            Rows(rng.Row).Copy
            Sheets("Records").Select
            If (Range("A1") <> "") Then
                Range("A10000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            Else
                Range("A1").PasteSpecial xlPasteValues
            End If
            Sheets("Input").Select
        End If
    Next rng
End Sub

答案 1 :(得分:0)

您的问题是在“ ActiveCell.Row”中,活动单元不是我当前假设的循环当前单元,即“ i”,因此您可以使用“ i.Row”代替< / p>

但是您也可以避免所有选择/激活,而是使用完全合格的范围引用:

Private Sub CopyRow()

    Dim i As Range

    With Sheets("Records") ‘reference target sheet
        For Each i In Sheet9.Range("A2:A1000") ‘loop through Sheet9 "A2:A1000" cells
            If i.Value2 = "HT" Then
                i.EntireRow.Copy
                .Cells(.Rows.Count,"A").End(xlUp).Offset(1,0).PasteSpecial xlPasteValues ‘ all “dots” are making following members/object referencing the object referenced in “With...” 
            End If
        Next
    End With
End Sub

答案 2 :(得分:0)

使用自动过滤器

app.listen(PORT);