从范围插入复制的单元格到另一个范围的空白单元格

描绘数据和底层excel文件的图像

范围的例子

底层的excel文件

问题和我所尝试的

  • 我在这里有一个名为范围2的表,我希望将它插入名为范围1的表中的空白区域,使得它在总体上看起来像范围3。
  • 我试图复制范围,然后select范围1,使用标记空白区域:首页 – >查找&select – >去特殊 – >select空白,然后插入复制的单元格。 这失败了,我得到的消息“这不能在多个范围select。 select一个范围,然后重试“”。 我进一步尝试使用loggingmacros工具来尝试VBA,但没有成功。
    • 注:我有一个更大的设置类似于范围1与完全相同的结构与空白单元格需要填充,否则,我会当然这样做手动

Sub DoIt() Dim r1 As Range, r2 As Range, r3 As Range, cel As Range With Worksheets("Sheet1") ' <-- your own sheet name here Set r1 = .Range("B3", .Cells(.Rows.Count, "B").End(xlUp)) Set r2 = .Range("G3", .Cells(.Rows.Count, "J").End(xlUp)) Set r3 = .Cells(.Rows.Count, "L").End(xlUp).Offset(1) For Each cel In r1 If Not IsEmpty(cel) Then r3.Resize(1, 4).value = cel.Resize(1, 4).value Set r3 = r3.Offset(1) Else r3.Resize(r2.Rows.Count, r2.Columns.Count).value = r2.value Set r3 = r3.Offset(r2.Rows.Count) End If Next End With End Sub 

有几种方法可以解决你正在做的事情。 如果您必须重复执行这两项操作,您可以使用VBA

  1. 将范围1和范围2放在单独的页面上
  2. 删除范围1和范围2在其各自的工作表中的所有空行
  3. 然后复制范围1,然后范围2聚合

(这将不会填补空白,但它会将它们聚合在一起,然后您可以轻松过滤或透视表数据)

如果你想以复杂的方式去解决这个问题,尽pipe你必须这么做

  1. 循环访问范围1的数据并logging所有空的行
  2. 通过范围2数据循环并logging有多lesslogging
  3. 通过范围2循环,并切割每行,粘贴范围1中logging的空行
  4. 如果范围2中有更多的数据行,则超出范围1
  5. 如果范围2中的数据行较less,则会引发错误或删除范围1中的其他空行

(这将需要比方法1多一点思考和逻辑,但它会填补像你最初要求的空白)

下面是让你开始的东西:

 Application.ScreenUpdating = False 'set range limits endRange1 = 17 endRange2 = 5 Dim rowArray() As Variant 'step 1 For i = 3 To endRange1 If Cells(i, 2).Value = "" Then range1EmptyRow = range1EmptyRow + 1 ReDim Preserve rowArray(1 To UBound(rowArray) + 1) As Variant rowArray(UBound(rowArray)) = i End If Next i 'step 2 For i = 3 To endRange2 If Cells(i, 7).Value <> "" Then range2Rows = range2Rows + 1 Next i