选择具有特定行

时间:2016-04-27 22:35:03

标签: excel vba excel-vba

我正在尝试从第2行复制所有带有值的单元格'coz第1行是标题/标题。但是,我的代码似乎选择了具有值的所有单元格。 :(
这是我要复制的代码:

Dim myData As Workbook
Set myData = Workbooks.Open("C:\Book2.xlsx")

Worksheets("Sheet1").Range("A2").Select
Worksheets("Sheet1").Range("A2").CurrentRegion.Copy

2 个答案:

答案 0 :(得分:6)

即使你在代码中提到CurrentRegion,我怀疑你不需要它,或者至少不打算以预期的方式使用它

让我们说我们的工作表看起来像这样。请注意Col F中的公式?

enter image description here

使用.Resize的问题在于它将包含具有公式的单元格,即使它们返回空白值。

采用MacroMan的例子

Sub Sample()
    With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0)
        .Resize(.Rows.Count - 1, .Columns.Count).Select
    End With
End Sub

enter image description here

  

我试图从第2行复制所有带有值的单元格&co ;; coz第1行是标题/标题。

根据我的理解,您可以通过查找最后一行和最后一列,其中包含数据并复制该内容来实现您的目标。

我认为这就是你想要的?请注意LookIn:=xlValues.Find

的使用情况
Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lRow As Long, lCol As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Cells.Find(What:="*", _
                After:=.Range("A1"), _
                Lookat:=xlPart, _
                LookIn:=xlValues, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Row

        lCol = .Cells.Find(What:="*", _
                After:=.Range("A1"), _
                Lookat:=xlPart, _
                LookIn:=xlValues, _
                SearchOrder:=xlByColumns, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Column

        Set rng = .Range(.Cells(2, 1), .Cells(lRow, lCol))

        Debug.Print rng.Address
        rng.Copy
    End With
End Sub

enter image description here

答案 1 :(得分:2)

您需要偏移并调整大小:

With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0)
    .Resize(.Rows.Count - 1, .Columns.Count).Copy
End With