Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro mit Autofilter





Frage

Hallo zusammen, ich habe ein Problem mit einem Makro: Ich möchte in einem Excel-Worksheet die Spalte mit der Überschrift "fail. starts" so filtern, dass alle Zeilen die ein "x" haben angezeigt werden. Dieses Makro will ich dann über verschiedene Excel-Dateien laufen lassen. Das Problem ist, dass die "fail. starts" nicht immer in der gleichen Spalte zu finden sind. Einmal in Spalte AT, einmal in AU, einmal in AM usw. Ich habe folgendes Makro aufgenommen: Sub RAM() ´ ´ RAM Macro ´ Macro recorded 02.05.2005 by MeGr ´ ´ Range("A9").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.Find(What:="fail.", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate Selection.AutoFilter Field:=46, Criteria1:="x" Range("A9").Select Range(Selection, Selection.End(xlDown)).Select Rows("9:147").Select Selection.Copy End Sub Ich suche zwar nach der Zelle in der "fail. starts" steht und setze dort auch den Filter auf "x" (mit der Tastenkombination Alt+Pfeil nach unten). Aber das Makro merkt sich trotzdem fest das Feld 46, das ist AT9. Wenn ich nun das Makro über eine andere Datei laufen lasse, in der die "fail. starts" nicht in Spalte AT sind, funktioniert das Ganze leider nicht. Kann mir da jemand einen Tipp geben? (rel. Zellenbezug habe ich schon probiert, funktioniert leider auch nicht...). Danke! Gruss, Mel

Antwort 1 von coros

Hi Mel,

kopiere nachfolgendes Makro in ein StandardModul und weise es einer Befehlsschaltfläche zu.

Sub Filtern()
Dim letzte_Zeile As Long, letzte_Spalte As Long, _
Spalte As Long, Zeile As Long
letzte_Zeile = Cells.SpecialCells(xlLastCell).Row
letzte_Spalte = Cells.SpecialCells(xlLastCell).Column
For Spalte = 1 To letzte_Spalte
For Zeile = 1 To letzte_Zeile
If Cells(Zeile, Spalte) = "fail. Starts" Then
Cells(Zeile, Spalte).AutoFilter Field:=2, Criteria1:="x"
End If
Next
Next
End Sub


Bei obigen Makro wird der Begriff "fail. Starts" in dem aktiven Blatt gesucht. Wenn der Begriff gefunden wurde, wird an der Stelle der Autofilter aktiviert.

Ich hoffe, das war so von Dir gemeint. Wenn nicht, bei Fragen oder Problemen mit dem Makro melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Melanie

Hi Coros,

danke für den Tipp. Werd´s mal versuchen und mich wieder melden...

Gruss,
Mel

Antwort 3 von Melanie

Hi Coros,

hier das Makro, mit dem es funktioniert:

Sub Filtern()
Dim letzte_Zeile As Long, letzte_Spalte As Long, Spalte As Long, Zeile As Long, letzte_Zeile_Markierung As Long, letzte_Spalte_Markierung As Long
letzte_Zeile = Cells.SpecialCells(xlCellTypeLastCell).Row
letzte_Spalte = Cells.SpecialCells(xlCellTypeLastCell).Column
For Zeile = 9 To letzte_Zeile
For Spalte = 1 To letzte_Spalte
If Left(Cells(Zeile, Spalte),5) = "Fail." Then
Range(Cells(Zeile, Spalte), Cells(letzte_Zeile, Spalte)).Select
Selection.AutoFilter field:=1, Criteria1:="x"
letzte_Zeile_Markierung = Cells.SpecialCells(xlCellTypeLastCell).Row
letzte_Spalte_Markierung = Cells.SpecialCells(xlCellTypeLastCell).Column
Range(Cells(Zeile, 1), Cells(letzte_Zeile_Markierung, letzte_Spalte_Markierung)).Select
Selection.Copy
Exit Sub
End If
Next
Next
End Sub

(Hatte Hilfe, alleine hätte ich das nie geschafft)
Vielen Dank für deine Hilfe.

Gruss,
Mel

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: