我正在尝试创建一个宏来将数据从工作表A复制到工作表B.工作表A只是填充了没有任何布局的数据。工作表B具有特定的布局,其中应粘贴工作表A的数据。工作表B在前10行中有一个标题,因此复制应从第11行开始。工作表A中的数据从第2行开始。因此row2(A)=> row11(B),row3(A)=> row12(B ),...这部分问题的代码包含在下面。
我正在努力的条件是,只应使用工作表B中没有colum F值的行。例如,如果工作表B中的第11-61行在F列中没有值,则工作表A的第2-52行应粘贴在工作表B的第11-61行中。如果单元格F62不为空,则应跳过该行下一行工作表A(第52行)应该粘贴在工作表B的第63行中。依此类推,直到下一行,第F列中有数据。
到目前为止的代码:
Sub RO()
'
' RO Macro
'
' Sneltoets: Ctrl+Shift+S
'
Dim a As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet
' Change worksheet designations as needed
Set Source = ActiveWorkbook.Worksheets("SO")
Set Target = ActiveWorkbook.Worksheets("RO")
j = 11 ' Start copying to row 11 in target sheet
For Each a In Source.Range("A2:A10000") ' Do 10000 rows
If a <> "" Then
Source.Rows(a.Row).Copy Target.Rows(j)
Target.Rows(j).Value = Source.Rows(a.Row).Value
j = j + 1
End If
Next a
提前致谢!
我通常使用这段代码来复制粘贴值。它非常快
Public Sub Copy()
Dim Source As Worksheet
Dim SourceRow As Long
Dim SourceRange As String
Dim Target As Worksheet
Dim TargetRow As Long
Dim TargetRange As String
Dim ColumnCount As Long
Set Source = ActiveWorkbook.Worksheets("Blad1")
Set Target = ActiveWorkbook.Worksheets("Blad2")
TargetRow = 11
ColumnCount = Source.UsedRange.Columns.Count
For SourceRow = 1 To Source.UsedRange.Rows.Count
SourceRange = Range(Cells(SourceRow, 1), Cells(SourceRow, ColumnCount)).Address
While Target.Cells(TargetRow, 6).value <> ""
TargetRow = TargetRow + 1
Wend
TargetRange = Range(Cells(TargetRow, 1), Cells(TargetRow, ColumnCount)).Address
Target.Range(TargetRange).Value = Source.Range(SourceRange).Value
TargetRow = TargetRow + 1
Next
End Sub
尝试使用2个单独的计数,1用于跟踪您要复制的源行,另一个用于跟踪您尝试粘贴的目标行。然后你可以独立递增它们,具体取决于行是否通过了标准等。
如果你粘贴块有两组行数:源开始和源端,粘贴开始和粘贴结束。不花哨,但允许最大限度地控制和处理异常等。