Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1608to1612
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

Makro von aktiver Zelle

Makro von aktiver Zelle
20.02.2018 19:49:27
aktiver
Hallo,
ich habe ein Makro, dass einen Spezialfilter ausführt:
Sub spezialfilter()
Sheets("tabelle_09").Range("A1:C1002").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("D93:D94"), CopyToRange:=Range("D96"), Unique:=True
End Sub

Nun will ich, dass nicht nur in Spalte "D" die Daten eingefügt werden, sondern in einen Bereich, jeweils ausgehend von der aktiven Zelle.
Das nächste mal sollen die Daten in Spalte "G" eingefügt werden.
Der Listenbereich "tabelle09 A1:C1002), soll flexibel gestaltet werden, da je nach Datenherkunft sich der Bereich ändert.
Der Kriterienbereich verschiebt sich auf Spalte "G". Der Zielbereich ebenfalls.
LG

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro von aktiver Zelle
23.02.2018 07:23:00
aktiver
Hallo Hans,
hier ein Makro, dass die Bereiche von Daten, Kriterien und Ziel dynamisch anpasst.
Die Zeile für die Filterkriterien ist mit 93 fest vorgegeben.
Du kannst diese aber auch noch dynamisieren, indem du sie relativ zur letzten Datenzeile festlegst.
Gruß
Franz
Sub spezialfilter()
Dim wks As Worksheet
Dim Zeile_L As Long, Spa As Long
Dim Zeile_Filter As Long
Set wks = Sheets("tabelle_09")
Spa = ActiveCell.Column
With wks
'letzte Zeile der Daten in Spalte A
Zeile_L = .Cells(1, 1).End(xlDown).Row
Zeile_Filter = 93 'Zeile fix
'       Zeile_Filter = Zeile_L - 3 'Zeile relativ zur letzten Datenzeile
'prüfen, ob Spalten-Titel in aktueller Spalte eingetragen ist
If .Cells(Zeile_Filter, Spa).Value = "" Or Spa  "" Then
'Daten im vorhandenen Zielbereichs löschen
Zeile_L = .Cells(.Rows.Count, Spa).End(xlUp).Row
.Range(.Cells(Zeile_Filter + 3, Spa), .Cells(Zeile_L, Spa + 2)).ClearContents
End If
'letzte Zeile der Daten in Spalte A
Zeile_L = .Cells(1, 1).End(xlDown).Row
'Spezialfilter setzen
.Range(.Cells(1, 1), .Cells(Zeile_L, 3)).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range(.Cells(Zeile_Filter, Spa), _
.Cells(Zeile_Filter + 1, Spa)), _
CopyToRange:=.Cells(Zeile_Filter + 3, Spa), Unique:=True
End If
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige