从特定行中选择具有值的所有单元格

Mee*_*dee 1 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
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 6

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

假设我们的工作表看起来像这样.注意Col F中的公式?

在此输入图像描述

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

以MacroMan为例

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

在此输入图像描述


我正在尝试从第2行复制所有带有值的单元格'coz第1行是标题/标题.

根据我的理解,你可以通过查找包含数据并复制该数据的最后一行和最后一列来实现.

我想这就是你想要的?注意使用LookIn:=xlValueswith.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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述