2017-01-10 4 views
0

HI Ich verwende diesen Code, um einen festen Bereich von Blatt "t1" in die erste leere Zeile in Blatt "t2" zu kopieren. Ich möchte alle Zeilen auswählen, die in der ersten Spalte einen Wert haben. Beispiel. Im Beispiel würde Ich mag alle Werte kopieren an john Ich bin mit einem Ende bei 44 (Zeilen 2, 3, 4 und 5)So kopieren Sie alle abgelegten Zeilen von einer Tabelle in eine andere

1 Name address zip 
2 john aaa 11 
3 jane bbb 22 
4 carl ccc 33 
5 jeff   44 

Hier ist der Code zu starten.

Sub Botão1_Clique() 

Application.ScreenUpdating = False 
Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 

Set copySheet = Worksheets("t1") 
Set pasteSheet = Worksheets("t2") 
copySheet.Range("A3:E3").Copy 


pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 



End Sub 
+0

Um leer zu bekommen Nicht leerer Bereich, Größe auf die gewünschte Spalte anpassen, 'SpecialCells (xlCellTypeConstants)' verwenden und dann die Größe ändern, um andere Spalten abzudecken. – cyboashu

+0

Erste leere Zeile auf t2 oder die letzte Zeile von t2? – Moacir

+0

letzte Zeile auf T2, T2 würde alle Werte speichern, die ich während des Tages in T1 eingeben, jeden Tag ändere ich die Werte auf t1 und am Ende des Tages möchte ich jedes Ding zu t2 in einer großen Liste kopieren. – Aman

Antwort

2

den Code Versuchen Sie, die AutoFilter Methode unter Verwendung, Kopieren aller Zeilen in Arbeitsblatt („t1“) bei, damit es Zeilen mit Daten, aber in Spalte A

Option Explicit 

Sub Botão1_Clique() 

Application.ScreenUpdating = False 

Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 
Dim Rng As Range 

Set copySheet = Worksheets("t1") 
Set pasteSheet = Worksheets("t2") 

copySheet.UsedRange.AutoFilter 
copySheet.UsedRange.AutoFilter Field:=1, Criteria1:="<>" ' <-- sut autofilter to exclude blanks on column A 

Set Rng = Intersect(copySheet.UsedRange.Offset(1), copySheet.UsedRange.SpecialCells(xlCellTypeVisible)) ' <-- set range to only visible rows without the header row 

Rng.Copy 
pasteSheet.Range("A" & pasteSheet.Cells(pasteSheet.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial xlPasteValues ' <-- paste values to first empty row at "t2" worksheet 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 

End Sub 
+0

Danke, es hat funktioniert! Ich schätze die Kommentare, um zu verstehen, was los war! – Aman

+0

Nur eine Frage ist es möglich, nicht die erste Zeile auszuwählen? – Aman

+0

Ja, aber ich muss ein paar Codezeilen ändern, so dass es etwas weniger sauber ist, ist es wichtig für dich? –

Verwandte Themen