Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren von Daten unter Autofilter

Kopieren von Daten unter Autofilter
18.09.2014 14:21:54
Daten
Hallo liebe Gemeinde,
folgende Situation:
In dem Sheet Projektverfolgung befinden sich 30.000 Einträge, welche aus einer Access-Datenbank gezogen werden.
In einem vorherigen Schritt wird die Datenbank nach Mitarbeiter aufgeteilt. Bsp. zu Mitarbeiter X gehören Y Datensätze. Im unten aufgeführten Schritt werden die nach Mitarbeiter gefilterten Daten in das "Projectscreening" gezogen. Ein Sheet welches die Datensäte auswertet.
Mit dem aufgeführten Makro kommt der Kopiervorgang jedoch nicht zu einem Ende, ich denke es liegt an der größe der Datenbank. Er kopiert wahrscheinlich alle Zeilen, und nicht nur die, die über den Autofilter ausgegeben wurden. Daher also meine Frage:
Was muss ich in dem aufgeführten Makro einbauen, damit nur die gefilterten Einträge kopiert werden, und nicht alle Einträge?
Mit freundlichen Grüßen,
Christian
x = Workbooks("Prototyp11.xlsm").Sheets("Projektverfolgung").Range("A2").Row
y = Workbooks("Prototyp11.xlsm").Sheets("Projektverfolgung").Range("A2").Column
Z = 0
Do While Workbooks("Prototyp11.xlsm").Sheets("Projektverfolgung").Cells(x, y).Value ""
Z = Z + 1
Workbooks("Prototyp11.xlsm").Sheets("Projectscreening").Range("A3").Value = _
Workbooks("Prototyp11.xlsm").Sheets("Projektverfolgung").Cells(x, y).Value
Loop
MsgBox "Es wurden " & Z & " Vorgänge aktualisiert"

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren von Daten unter Autofilter
18.09.2014 15:03:25
Daten
Hallo Christian,
Ich verstehe deinen Codefetzen nicht!
x = Workbooks("Prototyp11.xlsm").Sheets("Projektverfolgung").Range("A2").Row
x ist doch immer 2, da kannst du doch direkt x = 2 schreiben?
Zu deiner Frage (generell beantwortet, da keine Musterdatei):
Angenommen, deine Liste steht in A1:D100, in Zeile 1 stehen Überschriften. Es ist ein Autofilter gesetzt, der die Liste auf eine unbekannte Menge Zeilen zusammenfiltert. Mit:
Range("A2:D100").SpecialCells(xlCellTypeVisible).Copy
kopierst du dir alle sichtbaren Zellen aus dem Bereich heraus.
Achtung: ist keine Zelle sichtbar, kommt der Debugger!
Grüße,
Klaus M.vdT.

Anzeige
AW: Kopieren von Daten unter Autofilter
18.09.2014 15:25:51
Daten
Hallo KLaus,
vielen Dank für die schnelle Antwort!
Eine Beispieldatei kann ich leider nicht hochladen.
Die gefilterte Liste wird täglich aktualisiert und ist damit forlaufend.
Gibt es eine Möglichkeit die Range von A2 bis zu ende Der Spalten zu setzen?
Sowas wie Cells(x, y).Value ""

AW: Kopieren von Daten unter Autofilter
19.09.2014 08:07:38
Daten
Hi Christian,
entweder klassisch, die letzte Zeile ermitteln und dann per Variable übergeben:
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:D" & lastRow).SpecialCells(xlCellTypeVisible).Copy
Oder kürzer:
Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy
das , 1) macht, dass die letzte Zeile aus Spalte A ( = 1 ) gesucht wird. Suchst du die letzte Zeile aus Spalte H, musst du stattdessen , 8) schreiben usw.
Denke daran, falls du das ganze in einen WIDTH-Rahmen legst, musst du nicht nur Range, sondern auch Cells und Rows.Count referenzieren. Wenn du nicht weist was ein WIDTH-Rahmen ist, ignoriere den letzten Satz einfach.
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige