Bestimmte Zellen die den Typ enthalten kopieren auf ein anderes AB [VBA Marko]
#1
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
Top
#2
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
Top
#3
(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.

Huh
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
Top
#4
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
Top
#5
(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
Top
#6
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
Top
#7
(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")
Top
#8
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
Top
#9
(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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste