根据单元格中的值将行复制到另一个工作表

时间:2014-09-18 23:08:35

标签: vba excel-vba excel

我需要根据该行中的值将一行数据复制到另一张表上。该值为0,始终位于原始表的J列中。我希望将A-N列复制到第二张表。我找到了这个复制整行的脚本。问题是我需要保留以前在O - AZ列中输入到第二个(目标)表单的任何数据。不幸的是,下面的脚本将整行粘贴到第二个(目标)工作表,并且在O-AZ列中输入的任何数据都将丢失。

Sub MyMacro()

    Dim i As Long, iMatches As Long

    Dim aTokens() As String: aTokens = Split("0", ",")

    For Each Cell In Sheets("AMI").Range("J:J")

        If Len(Cell.Value) <> 0 Then

            For i = 0 To UBound(aTokens)

                If InStr(1, Cell.Value, aTokens(i), vbTextCompare) Then

                    iMatches = (iMatches + 1)

                    Sheets("AMI").Rows(Cell.Row).Copy Sheets("AMI Fallout").Rows(iMatches + 1)

                End If

            Next

        End If

    Next

End Sub

3 个答案:

答案 0 :(得分:0)

您正在使用以下代码复制完整行:

Sub dural()
    Sheets("Sheet1").Rows(11).Copy Sheets("Sheet2").Rows(17)
End Sub

要仅复制该行的部分,请使用以下内容:

Sub dural2()
    Set r1 = Intersect(Sheets("Sheet1").Rows(11), Sheets("Sheet1").Columns("A:N"))
    Set r2 = Intersect(Sheets("Sheet2").Rows(13), Sheets("Sheet2").Columns("A:N"))
    r1.Copy r2
End Sub

答案 1 :(得分:0)

要回答您的具体问题,此代码只会将指定行的A:n列复制到 AMI Fallout 工作表。

Sheets("AMI").Cells(Cell.Row, 1).Resize(1, 14).Copy Sheets("AMI Fallout").Cells(iMatches + 1, 1)

我很关心你如何确定行转移的积极标准。看起来你试图在逗号(不存在)上Split 0 然后遍历单个值数组并检查 0 <上的部分匹配/ em>的。 InStr产生的部分匹配是最令人不安的。

答案 2 :(得分:0)

使用类似的东西

Sheet1.Rows(cell.row) = sheet2.Rows(Cell.row).Value