我发现这个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
答案 0 :(得分:1)
只需使用Range.Cells property和Range.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
。