在复制VBA时删除空白单元格并构造数据

时间:2017-08-16 13:52:13

标签: excel vba excel-vba loops copy-paste

我目前正在开发一个项目,我需要在一个工作簿中复制目标范围并将其粘贴到另一个工作簿中,省略所有空白单元格(其中有很多)。

到目前为止,我已经设法将它们全部连续粘贴在一起,但我还是没有成功地对它进行结构化。

        For Each c In rngSourceRange.SpecialCells(xlCellTypeVisible)
            If Len(c) <> 0 Then
                rngDestination = c.Value
                Set rngDestination = rngDestination.Offset(0, 1)
            End If
        Next c

        Application.CutCopyMode = False

格式应该是这样的。前19个单元格应该连续排在一起,然后它应该向下移动一行返回到第一列并列出接下来的19个条目,依此类推,直到我完全没有要复制的单元格。现在我试图包含另一个for循环,但它产生了一个非常无用的结果。

        For Each c In rngSourceRange.SpecialCells(xlCellTypeVisible)
            If Len(c) <> 0 Then
            For lcol = 1 To 19
                wkbCrntWorkBook.Sheets("Tabelle1").Cells(lrow, lcol).Value = c.Value
                lrow = lrow + 1
            Next lcol
            End If
        Next c

        Application.CutCopyMode = False

请帮我正确构建此数据集。如果有任何帮助,我可以显示我的其余代码。

1 个答案:

答案 0 :(得分:1)

在您的第一个代码中,在此声明之后:

Set rngDestination = rngDestination.Offset(0, 1)

尝试添加以下语句:

 If rngDestination.Column > 19 Then _
   Set rngDestination = rngDestination.EntireRow.Offset(1).Cells(1)