直接在匹配值上方选择并复制行

时间:2015-02-10 11:17:58

标签: excel-vba vba excel

我有一个工作代码,它会查找一个值并复制整行,并将其粘贴到相关的表格中。

我想修改代码,以便它将整行复制到找到的值之上,而不是值的行。

有人可以建议一个简单的修正案,让我选择上面的一行吗?

Sub Prod()
Sheets("BJ").Cells.Clear
Sheets("Master").Range("A1:A2").EntireRow.Copy Destination:= _
Sheets("BJ").Range("A1")
Dim MyRange, MyRange1 As Range
Sheets("Master").Select
LastRow = Sheets("Master").Range("K65536").End(xlUp).Row
Set MyRange = Sheets("Master").Range("M1:Q325" & LastRow)
For Each c In MyRange
If c.Value = "BJ" Then
If MyRange1 Is Nothing Then
Set MyRange1 = c.EntireRow
Else
Set MyRange1 = Union(MyRange1, c.EntireRow)
End If
End If
Next
If Not MyRange1 Is Nothing Then MyRange1.Copy Sheets("BJ").[a3]
End Sub

1 个答案:

答案 0 :(得分:0)

以下是将 ActiveCell 正上方的行复制到另一个工作表的下一个打开行的一种方法:

Sub Dural()
    Dim sh2 As Worksheet, N As Long
    Set sh2 = Sheets("Destynation")
    N = sh2.Cells(Rows.Count, "A").End(xlUp).Row + 1

    If ActiveCell.Row = 1 Then
        MsgBox "Nothing above"
        Exit Sub
    End If

    ActiveCell.Offset(-1, 0).EntireRow.Copy sh2.Cells(N, 1)
End Sub