我想使用以下两个功能复制并粘贴数据集(表)的特定列:
数据不是以已知行开头
观察次数未知(带数据的行数也是如此)
我使用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
FirstRow
和LastRow
将用于引用要复制的范围。我想将数据从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
我尝试了很多选项来引用范围但没有成功。所以,我非常感谢你的帮助。
由于我是新手,我还要感谢任何有关良好网页的建议。
谢谢,
古斯塔沃
答案 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