Excel - 不将整行从Colum E到K的行复制到另一个工作表

时间:2015-09-01 17:05:09

标签: excel-vba vba excel

我发现这个Excel VBA代码非常简短且干净,它可以根据条件复制整行。我把它添加到我的vba项目中它运行良好唯一的问题是 - 它复制整行。

我正在尝试将代码实现为仅将列E中的行复制到K,但是 我没有成功地将代码调整到我想要做的事情。

基本上,在工作表"验证"如果列" AB" ="决赛"然后复制每一行" Final"从E列到K到工作表"上传"。

我拉着我的头发让它发挥作用,我每次都搜索,没有运气。我知道在这个平台上,我可以找到解决问题的方法。 我将继续玩代码。

Sub CopyEachRowtoUpload()

Application.ScreenUpdating = False

Dim wsI As Worksheet, wsO As Worksheet
Dim LastRow As Long, i As Long, j As Long
Dim LastColumn As Long, a As Long, b As Long
Dim rng As Range

Set wsI = Sheets("Verification")
Set wsO = Sheets("Upload")

Set rng = wsI.Range("E:K")

'Last Row in a Column. Row need to start in row 2
LastRow = wsI.Cells(Rows.Count, "K").End(xlUp).Row

'Last Column in a Row. Rows from Column E to K is what I want to copy
LastColumn = wsI.Cells(5, Columns.Count).End(xlToLeft).Column

'Row start

j = 2

With wsI
   'Loop through each row
    For i = 1 To LastRow
        If Range("AB" & i).Value = "Final" Then
            wsI.Rows(i).Copy
            wsO.Rows(j).PasteSpecial Paste:=xlPasteValues
        j = j + 1   
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:1)

只需使用Range.Cells propertyRange.Resize property一起定位和定位来源和目标。

With wsI
    'Loop through each row
    For i = 1 To LastRow
        If .Range("AB" & i).Value = "Final" Then
            wsO.Cells(j, "A").Resize(1, 7) = .Cells(i, "E").Resize(1, 7).Value
            j = j + 1
        End If
    Next i
End With

如果您想要的只是单元格值,则直接值传输优先于复制,选择性粘贴,值。

顺便说一句,您错过了.中的.Range("AB" & i).Value