2016-11-17 5 views
0

copy-paste ich bestimmte Spalten eines Datensatz (Tabelle) mit diesen beiden Funktionen kopieren möchte, und fügen Sie:Referenz einzelne Zelle benannte Bereiche in einem anderen Bereich

  • Daten starten nicht in einem bekannt Reihe

  • die Anzahl der Beobachtungen ist nicht bekannt (so ist die Anzahl der Zeilen mit Daten)

ich die Suchfunktion verwendet, um die Bereiche der ersten und letzten Zellen mit Daten zu erhalten, bu t dann kann ich nicht herausfinden, wie man sie in der Kopierfunktion referenziert. Das Folgende ist ein Beispiel dafür, was ich tun möchte:

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 und LastRow werden verwendet werden, um den Bereich zu referenzieren zu kopieren. Ich möchte die Daten von FirstRow auf die Säule von FirstRow (ei F) und die Reihe von LastRow (ei 9) kopieren, so dass die Aktion würde Bereich lesen (F4: F9) .copy

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

End Sub 

Ich habe versucht, viele Optionen, um die Bereiche ohne Erfolg zu referenzieren. Also, ich wäre wirklich dankbar für deine Hilfe.

Da ich neu bin, würde ich auch jeden Vorschlag einer guten Webseite zu schätzen wissen.

Danke,

Gustavo

Antwort

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 
0

Versuchen Sie diesen Code für Copy-Paste:

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

Das einzige, was, die Sie mit einem Arbeitsblatt des Objekts tun ein Arbeitsblatt Variable zu deklarieren überfüllt den Code. Die Ausnahme wäre, dem Arbeitsblatt einen aussagekräftigeren Namen zu geben, was Sie nicht tun.

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 
Verwandte Themen