我一直在研究这个代码,我的目标是做一个循环(从单元格N5开始),直到该列上的最后一个非空单元格。循环应该检查activecell是否为0,如果它是0,只是转到下面的单元格,如果不是,它应该将它的值复制并粘贴在F列的同一行。我写了这个但是有些错误,可以你能帮帮我吗?谢谢!
Sub inserir_offshore1()
Do Until x = 50
Worksheets("Sistema Duda").Range("f5").Activate
If ActiveCell <> 0 Then ActiveCell.Copy
ActiveCell.Offset(0, -8).PasteSpecial xlPasteValues
x = x + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
答案 0 :(得分:2)
此代码可以更有效地完成您正在寻找的内容。
Sub inserir_offshore1()
Dim LastRow as Long, ws as Worksheet
Set ws = Sheets("Sistema Duda")
LastRow = ws.Range("N" & ws.Rows.Count).End(xlUp).Row
For x = 5 to LastRow
If ws.Range("N" & x).Value <> 0 Then
ws.Range("N" & x).Copy
ws.Range("F" & x).PasteSpecial xlPasteValues
End If
Next x
End Sub
答案 1 :(得分:2)
只需粘贴值,请考虑直接分配值。
Sub inserir_offshore1()
Dim cel As Range
With Worksheets("Sistema Duda")
For Each cel In .Range("N5", .Range("N" & .Rows.Count).End(xlUp))
If cel <> 0 Then
cel.Offset(0, -8) = cel.value
End If
Next cel
End With
End Sub