引用另一个范围内的单个单元格范围来复制粘贴

时间:2016-11-17 06:21:48

标签: excel vba excel-vba range

我想使用以下两个功能复制并粘贴数据集(表)的特定列:

  • 数据不是以已知行开头

  • 观察次数未知(带数据的行数也是如此)

我使用find函数来获取带有数据的第一个和最后一个单元格的范围,但是我无法弄清楚如何在复制函数中引用它们。以下是我想要做的一个例子:

Sub prueba_copy()

Dim sht As Worksheet
Dim sht3 As Worksheet
Dim LastRow As Long
Dim FirstRow As Range

Set sht = ThisWorkbook.Worksheets(Sheet1.Name)
Set sht3 = ThisWorkbook.Worksheets(Sheet3.Name)

Set FirstRow = sht.Cells.Find("TIPO DE USO", searchorder:=xlByRows,     LookAt:=xlPart) ' the result is range: F4

LastRow = sht.Cells.Find("*", after:=Cells(1, 2), searchorder:=xlByRows, searchdirection:=xlPrevious).Row 'the result is: 9

FirstRowLastRow将用于引用要复制的范围。我想将数据从FirstRow复制到FirstRow(ei F)列和LastRow(ei 9)行,因此操作将读取范围(F4:F9).copy

'copy paste
 sht.Range("FirstRow.address():Firstrow.addres().column" & LastRow).Copy sht3.Range("A1")

End Sub

我尝试了很多选项来引用范围但没有成功。所以,我非常感谢你的帮助。

由于我是新手,我还要感谢任何有关良好网页的建议。

谢谢,

古斯塔沃

3 个答案:

答案 0 :(得分:1)

Dim f As range

Set f = Sheet1.Cells.Find("TIPO DE USO", searchorder:=xlByRows, LookAt:=xlPart)

If Not f Is Nothing Then
    Sheet1.Range(f, Sheet1.Cells(Rows.Count, f.Column).End(xlUp)).Copy _
                 Sheet3.Range("A1")
Else
    Msgbox "Header not found!"
End If 

答案 1 :(得分:0)

尝试使用此代码进行复制粘贴:

sht.Range(Cells(FirstRow.Row, FirstRow.Column), Cells(LastRow, FirstRow.Column)).Copy sht3.Range("A1")

答案 2 :(得分:0)

通过使用工作表的对象声明工作表变量,您正在做的唯一事情是使代码混乱。例外情况是为工作表提供一个更有意义的名称,您没有这样做。

Dim Source As Range

With Sheet1
    Set Source = .Cells.Find("TIPO DE USO", searchorder:=xlByRows, LookAt:=xlPart)

    If Not Source Is Nothing Then
        .Range(Source, Source.EntireColumn.Rows(.Rows.Count).End(xlUp)).Copy Sheet3.Range("A1")
    End If
End With