Nur gefilterte Daten einer Liste
bzw. Intelligenten Tabelle kopieren
In diesem Arbeitsblatt ist für ein Projekt vermerkt, an welchem Arbeitstag ein bestimmter Mitarbeiter wieviel Zeit sie oder er dafür aufgewendet hat. Die Werte wurden unregelmäßig eingegeben, darum herrscht dort auch ein leichtes Durcheinander. (Der wahre Hintergrund: Die Liste wurde mit Zufallszahlen ausgefüllt und anschließend Als Wert kopiert.)
Das Ziel: Die Liste soll gefiltert werden und beginnend in F1:H1 sollen (unterhalb der Überschrift) nur die gefilterten Werte kopiert werden. Beispiel einer Fragestellung: Wer hat in den ersten 5 Tagen wie viele Stunden an dem Projekt gearbeitet? Es sollen (mit Ausnahme der Zahlen-Formatierungen) die Werte kopiert werden, keine Pivot-Auswertung oder formeltechnische Lösung!
Ach ja, die Spalte D wird nicht ausgewertet. Sie hat einerseits den Zweck Ihnen zu zeigen, dass nicht immer die komplette gefilterte Liste kopiert werden muss und enthält auch einen kleinen Fingerzeig, wie Sie besonders arbeitsame Mitarbeiter (mehr als 8 Stunden an 1 Tag gearbeitet) hervorheben können.
Plain Excel
Das Ziel ist beschrieben. Und der Weg dort hin hört sich eigentlich ganz einfach an, aber probieren Sie es gerne selbst einmal aus … Wir schlagen diesen Weg vor:
- Erforderlichenfalls die Aufstellung zu einer Liste / Intelligenten Tabelle machen (ist in der vorgegebenen Datei bereits geschehen).
- Die ersten drei Spalten der Liste ab Zeile 2 markieren. Das geht (bei einer Intelligenten Tabelle) sehr schön so:
- Zeigen Sie auf den oberen Rand der Überschrift in A1:
- Klick mit der linken Maustaste.
- Bei gedrückter Maustaste bis Spalte C ziehen, dann los lassen.
- Arbeits-Tag per Zahlenfilter auf <6 oder <=5 filtern.
- Vergleichen Sie anschließend bitte mit dieser Abbildung:
- F5 oder StrgG. Dort auf Inhalte… Klicken.
- Im Folge-Fenster markieren Sie Nur Sichtbare Zellen:
- Nach dem OK StrgC oder Kopieren.
- Den Filter aus Arbeits-Tag entfernen, damit F3 sichtbar wird.
- F3 anklicken und StrgV oder nach Belieben Einfügen. Eventuelle Tabellen-Formatierungen können Sie noch entfernen.
VBA
Das Ganze lässt sich (natürlich) auch per VBA durchführen. Das ist aber naturgemäß etwas starrer, weil die Variablen ja fest gecodete Werte haben und auch nicht „mal so eben” ein einzelner Mitarbeiter gefiltert und kopiert werden kann. Daher sind die Einsatzgebiete durchaus differenziert zu sehen, wenn auch jede Vorgehensweise ihre Vorteile hat. So ließe sich leicht per InputBox die Anzahl der Tage abfragen, etc. – Hier bleiben wir bei der oben beschriebenen Vorgabe von den ersten fünf Tagen und hier nun der entsprechende Code:
Sub NurGefilterteKopieren()
Dim tblRow1 As Integer, lRow As Integer
Dim tblName As String
tblName = "tbl_Projekt_Zeiten" 'Der Name wurde so (von uns) vergeben
tblRow1 = Range(tblName).Row 'Erste Zeilennummer muss ja nicht 1 sein
With ListObjects(tblName)
lRow = .ListRows.Count + 1 'Wegen der Überschrift
.Range.AutoFilter Field:=1, Criteria1:="<6"
Range("A" & tblRow1 - 1 & ":C" & lRow).Copy
'Filter entfernen, alle wieder anzeigen
Range("F1").PasteSpecial xlPasteAllExceptBorders
.Range.AutoFilter Field:=1
End With
Columns("F:H").EntireColumn.AutoFit
Range("F1").Select 'Des Aussehens wegen
End Sub
Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?
Dann würde ich mich über einen Beitrag Ihrerseits z.B. 1,00 € freuen … (← Klick mich!)