如何复制范围并省略空白单元格?
在表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