如何复制范围并省略空白单元格?

在表1的A列中,我需要以每个350个单元复制3000个单元格。 我目前的macros正在复制一切正常,直到我到最后,它复制空白。 有没有一种方法,包括一个“单元格是空白什么都不做”代码到我的macros?

对不起,如果这听起来没有教养,我只是开始学习macros。 这里是当前macros的一个副本,macros的其余部分与350相同。

Sub Copy_Bins_1_350() If Range("D12").Value <> "!" Then Exit Sub ElseIf Range("D12").Value = "!" Then Sheets("sheet1").Select Range("B2:B351").Select Selection.Copy Range("B2").Select Sheets("sheet2").Select Range("E12").Select With Selection.Font .ColorIndex = xlAutomatic .TintAndShade = 0 End With End If End Sub 

您可以使用Union来形成您自己的非空单元格的范围,然后复制它们。

还有趣读

试试这个( TRIED AND TESTED

 Sub Sample() Dim wsI As Worksheet, wsO As Worksheet Dim aCell As Range, rngCopyFrom As Range, rng As Range Dim lRow As Long Set wsI = ThisWorkbook.Sheets("BIN LIST PASTE") Set wsO = ThisWorkbook.Sheets("BIN LIST COPY") Set rng = wsI.Range("B2:B351") For Each aCell In rng If Len(Trim(aCell.Value)) <> 0 Then If rngCopyFrom Is Nothing Then Set rngCopyFrom = aCell Else Set rngCopyFrom = Union(rngCopyFrom, aCell) End If End If Next If Not rngCopyFrom Is Nothing Then _ rngCopyFrom.Copy wsO.Range("E12") With wsO lRow = .Range("E" & .Rows.Count).End(xlUp).Row Set rng = .Range("E12:E" & lRow) With rng.Font .ColorIndex = xlAutomatic .TintAndShade = 0 End With End With End Sub