2012-07-10 86 views
0

我有一张有200行,其间有空白的表单。复制列中的所有单元格

我不能使用End(xlDown)End(xlUp)来获取整个范围,因为有空行。

如何复制到列中有数据的最后一个范围?

此外,我不想复制标题。

请建议我如何在Excel VBA中做到这一点。

+3

欢迎堆栈溢出。请阅读[常见问题] - 预计您将展示一些特定编程问题的努力。 _简单地问一下你已经在几个问题上做过的代码,这个代码被压在了__上。如果您没有任何示例代码,请花更多时间学习语言,并回到特定问题。将问题分解成更小的步骤,并搜索如何解决这些问题。如果你困在那些,请在这里问。但是下载代码的命令在这里不起作用。 – JimmyPena 2012-07-10 16:53:41

+0

我们希望您试图自己解决这个问题,而不是要求社区为您提供完整的解决方案。当你有一些代码向我们展示,证明你有一些努力(即使它是错误的),请更新你的问题和标志重新打开。谢谢。 – Kev 2012-07-11 23:44:06

回答

4

您可以使用下面的代码获得活动工作表A列中最后一次使用的行(如果在列中间有空白单元格,它也可以工作) - 根据需要修改如果需要在不同的表/列。

With ActiveSheet 
    lastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
    .Range("A2:A" & lastRow).Copy 'copies column A used range, excluding header row 
End With 
7

复制它们的最好方法是使用自动筛选和过滤它们空白,然后复制可视范围

对于实例

Sub Sample() 
    Dim ws As Worksheet 
    Dim lRow As Long 
    Dim rngToCopy As Range, rRange As Range 

    Set ws = Sheets("Sheet1") 

    With ws 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 

     Set rRange = .Range("A1:A" & lRow) 

     '~~> Remove any filters 
     .AutoFilterMode = False 

     With rRange 'Filter, offset(to exclude headers) and copy visible rows 
      .AutoFilter Field:=1, Criteria1:="<>" 
      Set rngToCopy = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow 
     End With 

     '~~> Remove any filters 
     .AutoFilterMode = False 

     rngToCopy.Copy 

     ' 
     '~~> Rest of the Code 
     ' 
    End With 
End Sub 
相关问题