Registriert seit: 02.12.2016
Version(en): 2013
Hallo liebes clever-excel-forum,, ich habe eine Protokoll Excelliste mit zwei Arbeitsblättern. Das Blatt "Protkoll" hat eine Spalte (in meinem Fall Spalte B) der verschiedene Typen beinhaltet. Ich möchte aus dem Blatt Protokoll alle Zellen die den Typ "A" haben auf ein anderes Arbeitsblatt kopieren. Mittels einem Marko und mittels VBA. Das kopieren habe ich hinbekommen, jedoch fällt mir das herausziehen der einzelnen Zeilen schwer. Kopier-Code: Code: protokollSheet.Range("E3:E2000").Copy Destination:=tfsSheet.Range("K3")
Gruß und vielen Dank
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
ich würde es mit dem Spezialfilter lösen. Das kann auch aufgezeichnet werden.
den Kriterienbereich in der Tabelle aufbauen, in die kopiert werden soll. Dann die Aufzeichnung aus dieser Tabelle heraus starten.
Gruß Atilla
Registriert seit: 02.12.2016
Version(en): 2013
(22.02.2017, 11:10)atilla schrieb: Hallo,
ich würde es mit dem Spezialfilter lösen. Das kann auch aufgezeichnet werden.
den Kriterienbereich in der Tabelle aufbauen, in die kopiert werden soll. Dann die Aufzeichnung aus dieser Tabelle heraus starten. Vielen Dank für die Antwort habe es so gelöst. Erst setzt ich ein Autofilter nur auf Typ "A" Code: 'setzt Autofilter nur A protokollSheet.Range("B3").AutoFilter Field:=2, Criteria1:="A" 'Code mehrer Spalten werden gefiltert auf die andere Tabelle kopiert 'Setzt Autofilter zurück mit einem Marko FilterAll
Die Lösung fand ich am besten, weil dadurch nicht immer Filter gefiltert wird, sondern nur einmal und am ende zurück gefiltert wegen der Performance. Ich hätte noch eine Frage, mein Status hat offen oder erledigt, wenn es "offen" ist soll in dem anderen Arbeitsblatt nicht offen kopiert werden, sondern "new" schreiben. Habe gedacht das es mit For-Each und inStr gehen könnte. Gäbe es da eine Lösung ? Vielen Dank
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, ich hatte erst vor den Autofilter vorzuschlagen, habe es mir dann anders überlegt, weil 1. der Spezialfilter ist eines der schnellsten Werkzeuge. 2. beim Autofilter muss man etwas mehr bedenken. Nach dem Filtern nie vergessen den Filter zurückzusetzen. Aber egal, wenn man einiges bedenkt, kann man ihn auch nutzen. Wie gesgat von der Performance ist der Spezielle schneller. Zu Deine neuen Frage: Verstehe ich Dich richtig, dass Du nach dem Kopieren den Begriff "offen" durch "new" ersetzen möchtest. Wenn Ja, dann schau mal hier im Beitrag: www.clever-excel-forum
Gruß Atilla
Registriert seit: 02.12.2016
Version(en): 2013
22.02.2017, 16:13
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017, 16:13 von promenade.
Bearbeitungsgrund: rs
)
(22.02.2017, 12:49)atilla schrieb: Hallo,
ich hatte erst vor den Autofilter vorzuschlagen, habe es mir dann anders überlegt, weil 1. der Spezialfilter ist eines der schnellsten Werkzeuge. 2. beim Autofilter muss man etwas mehr bedenken. Nach dem Filtern nie vergessen den Filter zurückzusetzen.
Aber egal, wenn man einiges bedenkt, kann man ihn auch nutzen. Wie gesgat von der Performance ist der Spezielle schneller.
Zu Deine neuen Frage: Verstehe ich Dich richtig, dass Du nach dem Kopieren den Begriff "offen" durch "new" ersetzen möchtest.
Wenn Ja, dann schau mal hier im Beitrag: www.clever-excel-forum Wäre es möglich schon beim rüber kopieren schon offen auf new zu ersetzen oder müsste man erst reinkopieren dann ersetzen? Vielen Dank
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
beim ginge, aber das würde etwas mehr VBA Kenntnisse erfordern.
Wenn der Bereich aus dem kopiert wird erhalten werden soll, dann nach dem kopieren. Wenn Du im anderen Tread Dir den Code von snb angehen hast, dann wäre es eine Zeile Code mehr.
Gruß Atilla
Registriert seit: 02.12.2016
Version(en): 2013
23.02.2017, 10:46
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2017, 10:46 von promenade.
Bearbeitungsgrund: rs
)
(22.02.2017, 16:29)atilla schrieb: Hallo,
beim ginge, aber das würde etwas mehr VBA Kenntnisse erfordern.
Wenn der Bereich aus dem kopiert wird erhalten werden soll, dann nach dem kopieren. Wenn Du im anderen Tread Dir den Code von snb angehen hast, dann wäre es eine Zeile Code mehr. Guten Morgen atilla, Vielen Dank, hab es hinbekommen. Ich möchte, dass ich eine Variable bekomme, die mir die Anzahl der gefilterten Tabelle ausgibt. Ich habe was aus dem Internet, jedoch habe ich mich verlaufen. Da ich .UsedRange die richtige Anzahl bekomme von der gefilterten Liste, jedoch kann ich die nicht richtig mit Range anwenden, da die Typ Variablen nicht gleich sind ( nehme ich an ). Nach der Erfassung der Anzahl möchte ich es in .Rannge mit .copy benutzen und den Endwert angeben. Code: 'Filter----------------------------------------- protokollSheet.Range("B3").AutoFilter Field:=2, Criteria1:="A" protokollSheet.Range("B3").AutoFilter Field:=9, Criteria1:="New" 'Zählt die Anzahl wie viel gefiltert wurde Rowz = protokollSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 MsgBox "zahl " & Rowz & "" '/ gibt die Zahl der gefilterten Zellen an gibt 72 aus 'Kopieren------------------------------------------ protokollSheet.Range("E3:Rowz").Copy Destination:=tfsSheet.Range("D3")
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, Code: Rowz = protokollSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count -
Rowz müsste doch die Anzahl wiedergeben. Was möchtest Du machen. Möchtest Du mehrmals hintereinander Filtern und kopieren und die gefilterten Daten an anderer Stelle untereinander einfügen. Wenn Du mit obigem Beispiel nicht klar kommst, dann lies doch vor dem einfügen die erste freie Zelle im Einfügebereich neu aus.
Gruß Atilla
Registriert seit: 02.12.2016
Version(en): 2013
(23.02.2017, 10:52)atilla schrieb: Hallo,
Code: Rowz = protokollSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count -
Rowz müsste doch die Anzahl wiedergeben.
Was möchtest Du machen. Möchtest Du mehrmals hintereinander Filtern und kopieren und die gefilterten Daten an anderer Stelle untereinander einfügen. Wenn Du mit obigem Beispiel nicht klar kommst, dann lies doch vor dem einfügen die erste freie Zelle im Einfügebereich neu aus. Genau ich möchte nach Typ und New filtern und dann untereinander in anderem worksheet es ausgeben lassen. Um es effektiver zu machen wollte ich die Anzahl von den Zeilen zählen und es im Range einfügen.
|