Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Zeilen ausblenden bei 2 Bedingungen

Forumthread: Makro Zeilen ausblenden bei 2 Bedingungen

Makro Zeilen ausblenden bei 2 Bedingungen
03.08.2014 18:06:57
Andreas

Hallo Excelfreunde,
Ich bin neu hier im Forum und hoffe einer kann mir helfen.
suche Makro zu Folgenden Sachverhalt:
In meiner Tabelle stehen in Spalte F und G ab Zeile 14 bis 333 (wobei nicht alle Zeilen bis 333 belegt sind, Datumswerte zB.
F14 = 03.03.2014 G14 = 05.03.2014
F15 = 10.03.2014 G15 = 19.03.2014
F16 = 10.03.2014 G16 = 20.03.2014
F17 = 24.03.2014 G17 = 30.03.2014
usw. usw.
jetzt möchte in Zelle F11 ein beliebiges Anfangsdatum und in Zelle G11 ein beliebiges Enddatum reinschreiben.
Anhand dieser beiden Dat Werte soll meine Tabelle von F14:G333 durchsucht werden und wenn der Wert in Spalte F Gleich oder Größer des eingetragenen Wertes in Zelle F11 und wenn der Wert in Spalte G Gleich oder Kleiner des eingetragenen Wertes in Zelle G11 in gleicher Zeile ist sollen diese Zeilen eingeblendet bleiben und alle anderen Zeilen sollen ausgeblendet werden.
Dieses Makro möchte ich dann einer Schaltfläche zufügen.
Wo muß ich dann gegebenenfalls dieses Makro einfügen?
Tabellenblatt, Diese Arbeitsmappe oder Modul?
Ich möchte dieses Makro auf verschiedene Tabellenblätter und einem Auswertungstabellenblat anwenden können.
Für Eure Bemühung bedanke ich mich bereits jetzt und hoffe das mir bei dieser Aufgabe einer helfen kann
https://www.herber.de/bbs/user/91857.xlsx
besten Dank Andreas

Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
03.08.2014 18:08:57
Hajo_Zi
Hallo Andreas,
warum nicht Autofilter?

AW: Makro Zeilen ausblenden bei 2 Bedingungen
03.08.2014 18:13:15
Andreas
Die Datei sollen auch andere Kollegen mit benutzen und da hätte ich das gern per Makro mit einer Schaltfläche
Danke Andreas

AW: Makro Zeilen ausblenden bei 2 Bedingungen
03.08.2014 18:34:11
Andreas
Hallo Hajo,
Ich bin gerade dabei mir VBA Kenntnisse anzueignen Ich habe mir das Buch gekauft VBA mit Excel von Christian Friedrich.
Ich habe mir auch Deine Datei angeschaut da geht das aber mit dem Autofilter nicht wie ich das haben möchte.
Es sollen eben per Schaltfläche alle Zeilen eingeblendet bleiben die in der gleichen Zeile die Bedingung erfüllen
Also wenn zB. in F14 03.03.2014 steht und in G14 10.03.2014
dann soll laut Bedingung in Zelle F11 zB.01.03.2014 und in Zelle G11 zB. 30.03.2014 alle Zeilen eingeblendet bleiben die diese Bedingung erfüllen. Alle anderen Zeilen sollen ausgeblendet werden.
Ich habe VAB nein angegeben weil ich eben noch nicht gut genug bin.
Sorry
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
03.08.2014 20:15:31
Andreas
Hallo Excelfreunde,
dieses Makro habe ich bereits um Zeilen auszublenden wenn eine Bedingung in Spalte erfüllt ist in diesem Fall steht In der Zelle eine 1
Sub DatenAusblenden()
Application.ScreenUpdating = False
For i = 14 To Cells(Rows.Count, 55).End(xlUp).Row  'hier beginnt das Makro ab Zeile 14 den  _
Befehl auszuführen
If Cells(i, 55).Value = 1 Then  'wenn in Spalte C Wert 1 steht wird Zeile ausgeblendet
'If Cells(i, 3).Value = 2 Then  'wenn in Spalte C Wert 2 steht wird Zeile ausgeblendet
'If Cells(i, 53).Value < 3 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
End Sub
Wie gesagt ich möchte das aber jetzt so haben wie zuvor schon beschrieben.
Wäre für eine Hilfe wirklich dankbar.
Ich denke in der Datei die ich hochgeladen habe kann mein Anliegen hoffentlich nachvollzogen werden.
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 08:39:06
Robert
Hallo Andreas,
wenn ich das richtig verstehe willst du dein Makro nur so modifizieren, dass nur eine von 3 Bedingungen erfüllt sein muss um die Zeile auszublenden.
Das ginge z.B. so:
Sub DatenAusblenden()
Application.ScreenUpdating = False
For i = 14 To Cells(Rows.Count, 55).End(xlUp).Row  'hier beginnt das Makro ab Zeile 14 den  _
Befehl auszuführen
If Cells(i, 55).Value = 1 OR Cells(i, 3).Value = 2 OR Cells(i, 53).Value < 3  _
Then
Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
End Sub
Der Code Springt an, wenn eine der Drei Bedingungen zutrifft und blendet die Zeile dann aus.
Sollen alle drei Bedingungen erfüllt sein um die Zeile auszublenden, statt OR entsprechend mit AND arbeiten.
Viele Grüße
Robert

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 11:19:12
Andreas
Hallo Robert,
das ist es nicht was ich suche
wie bereits in meiner 1.Frage Datei hängt mit an, möchte ich das das Makro mir folgende Zeilen eingeblendet lassen soll wenn alle beiden Bedingungen erfüllt sind.
1. in Zelle G11 soll zB. das Datum 01.03.2014 geschrieben werden
2. in Zelle F11 soll zB. da Datum 30.03.2014 geschrieben werden
Jetzt soll anhand der beiden Bedingungen Spalte G14:G333 und F14:F333 durchlaufen werden und wenn die Bedingungen aus Zelle G11 in der Spalte G14:G333 das Datum gleich oder größer ausgibt und in der dazugehörigen Zeile in Spalte F14:F333 das Datum gleich oder kleiner anhand der Zelle F11 ist soll die entsprechende Zeile eingeblendet bleiben und alle anderen Zeilen welche der Bedingung nicht entsprechen oder leer sind ausgblendet werden
zB:
Bedingung eintragen in Zelle G11 Datum "01.03.2014"
Bedingung eintragen in Zelle F11 Datum "30.03.2014"
in Zeile Spalte G14 steht Datum "04.03.2014" in Spalte F14 steht Datum "10.03.2014 Zeile soll eingeblendet bleiben
in Zeile Spalte G15 steht Datum "10.03.2014" in Spalte F15 steht Datum "28.03.2014 Zeile soll ebenfalls eingeblendet bleiben
in Zeile Spalte G16 steht Datum "02.04.2014 in Spalte F16 steht Datum "15.04.2014 Zeile soll jetzt ausgeblendet werden.
Ich will also erreichen wenn ich auf eine Schaltfläche klicke das mir dann noch die Mitarbeiter angezeigt werden welche die Bedingungen erfüllen all andere Zeilen sollen ausgblendet werden.
Ich hoffe das ich das jetzt verständlich erklärt habe.
kannst Du, könnt Ihr mir da helfen?
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 12:24:53
Andreas
Hallo Robert,
das ist es nicht was ich suche
wie bereits in meiner 1.Frage Datei hängt mit an, möchte ich das das Makro mir folgende Zeilen eingeblendet lassen soll wenn alle beiden Bedingungen erfüllt sind.
1. in Zelle G11 soll zB. das Datum 01.03.2014 geschrieben werden
2. in Zelle F11 soll zB. da Datum 30.03.2014 geschrieben werden
Jetzt soll anhand der beiden Bedingungen Spalte G14:G333 und F14:F333 durchlaufen werden und wenn die Bedingungen aus Zelle G11 in der Spalte G14:G333 das Datum gleich oder größer ausgibt und in der dazugehörigen Zeile in Spalte F14:F333 das Datum gleich oder kleiner anhand der Zelle F11 ist soll die entsprechende Zeile eingeblendet bleiben und alle anderen Zeilen welche der Bedingung nicht entsprechen oder leer sind ausgblendet werden
zB:
Bedingung eintragen in Zelle G11 Datum "01.03.2014"
Bedingung eintragen in Zelle F11 Datum "30.03.2014"
in Zeile Spalte G14 steht Datum "04.03.2014" in Spalte F14 steht Datum "10.03.2014 Zeile soll eingeblendet bleiben
in Zeile Spalte G15 steht Datum "10.03.2014" in Spalte F15 steht Datum "28.03.2014 Zeile soll ebenfalls eingeblendet bleiben
in Zeile Spalte G16 steht Datum "02.04.2014 in Spalte F16 steht Datum "15.04.2014 Zeile soll jetzt ausgeblendet werden.
Ich will also erreichen wenn ich auf eine Schaltfläche klicke das mir dann noch die Mitarbeiter angezeigt werden welche die Bedingungen erfüllen all andere Zeilen sollen ausgblendet werden.
Ich hoffe das ich das jetzt verständlich erklärt habe.
kannst Du, könnt Ihr mir da helfen?
hatte vergessen den Beitrag noch als offen zu vermerken Sorry
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 13:21:16
Robert
Hallo Andreas,
Jetzt habe ich verstanden.
Du hast die Zellen F11 und G11, in denen du Start und Ende eines Zeitraumes angibst.
Nun sollen alle Zellen, deren Daten in F respektive G außerhalb des angegebenen Zeitraums liegen, ausgeblendet werden, und die, bei denen beide Daten innerhalb des Zeitraumes Liegen sollen eingeblendet bleiben.
So weit weg war mein Makro dann aber nicht :)
Versuche er dieses:
Sub DatenAusblenden()
Application.ScreenUpdating = False
Dim i As Integer
Dim VonSpalte As Integer
Dim BisSpalte As Integer
Dim StartDatum As Range
Dim EndDatum As Range
StartDatum = Range("F11")
EndDatum = Range("G11")
VonSpalte = 1 'Spalte "Zeitraum Von" als Nummer
BisSpalte = 1 'Spalte "Zeitraum Bis" als Nummer
For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(i, VonSpalte) <= StartDatum Or Cells(i, BisSpalte) >= EndDatum Then
Rows(i).EntireRow.Hidden = True
Else
Rows(i).EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub
Variablen entsprechend bearbeiten.
Viele Grüße
Robert

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 14:05:38
Andreas
Hallo Robert,
ja Du hast richtig verstanden was ich will
habe das Makro in meiner Datei in das Tabellenblatt eingefügt das ich filtern möchte.
jetzt kommt aber wenn ich das Makro ausführe die Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt"
in der Excel Hilfe konnte ich aber mit der Erklärung nichts anfangen
"With....End With"
habe vonSpalte = 1 auf vonSpalte = 6 geändert für Stalte "F" und
habe bisSpalte = 1 auf bisSpalte = 7 geändert für Spalte "G"
funktioniert aber bei mir nicht
wie muß ich also nach Deiner Meinung nach die Variablen anpassen?
brauche unbedingt noch Hilfe
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 14:13:56
Robert
Hallo Andreas,
da hab ich wohl einen Knick in der Logik bei meinen Rangevariablen.
so läufts durch, dann musst du eben die Zellen mit Start bzw. Enddatum im Code selbst und nicht komfortabel oben ändern.:
Option Explicit
Sub DatenAusblenden()
Application.ScreenUpdating = False
Dim i As Integer
Dim VonSpalte As Integer
Dim BisSpalte As Integer
Dim StartDatum As Range
Dim EndDatum As Range
VonSpalte = 1 'Spalte "Zeitraum Von" als Nummer
BisSpalte = 1 'Spalte "Zeitraum Bis" als Nummer
For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(i, VonSpalte) <= Range("F11") Or Cells(i, BisSpalte) >= Range("G11") Then 'erst  _
Startdatum, dann Enddatum
Rows(i).EntireRow.Hidden = True
Else
Rows(i).EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub
Viele Grüße
Robert

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 14:45:40
Andreas
Hallo Robert,
ja so funktioniert das besten
genau so habe ich mir das vorgestellt.
wie ich beim testen festgestellt habe bleiben die Zeilen mit erfüllter Bedingung korrekt eingeblendet.
wie kann ich es jetzt aber noch hinkriegen das auch noch zusätzlich die Zeilen eingeblendet bleiben wenn in Spalte F noch kein Enddatum steht, sondern der Text "ohne" aus einer Formel
Soll heißen das ich in Spalte G ein Beginn Datum einfüge und in Spalte F dann ein Enddatum einfüge.
so zB.
Zeile G15 das Datum 10.03.2014 F15 steht dann noch aus einer Formel "ohne" diese Zeile soll dann ebenfalls noch mit eingeblendet sein
kann man das irgendwie noch mit in das Makro einbauen?
brauche nochmals Hilfe dazu
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 14:19:02
Robert
Hallo Andreas,
Flüchtigkeitsfehler:
Statt
StartDatum = Range("F11")
EndDatum = Range("G11")

Schreibe:
Set StartDatum = Range("F11")
Set EndDatum = Range("G11")
viele Grüße
Robert

AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 15:07:53
Andreas
Hallo Robert, Hallo Exelfreunde
habe das Makro von Robert jetzt nochmals angepasst (bis dahin erst mal vielen Dank an Robert für die gute Unterstützung)
Sub DatenAusblenden()
Application.ScreenUpdating = False
Dim i As Integer
Dim VonSpalte As Integer
Dim BisSpalte As Integer
Dim StartDatum As Range
Dim EndDatum As Range
Set StartDatum = Range("F11")
Set EndDatum = Range("G11")
VonSpalte = 6 'Spalte "Zeitraum Von" als Nummer
BisSpalte = 7 'Spalte "Zeitraum Bis" als Nummer
For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(i, VonSpalte) <= StartDatum Or Cells(i, BisSpalte) >= EndDatum Or Cells(i,  _
BisSpalte) = "ohne" Then
Rows(i).EntireRow.Hidden = True
Else
Rows(i).EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub

und an die If Anweisung noch eine Oder Bedingung eingefügt
Or Cells(i, BisSpalte) = "ohne" Then
diese Anweisung funktioniert aber nicht. Was ist da noch falsch oder muß geändert werden?
brauche nochmal Hilfe dazu
Gruß Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 15:37:09
Robert
Hallo Andreas,
Sollte funktionieren.
Was heißt denn "funktioniert nicht"? Gibt es eine Fehlermeldung? oder einfach nur nicht das gewünschte Ergebnis? Logikfehler?
Dein Code oben sagt:
Wenn in der Spalte Bis "ohne" steht, blende die Zeile aus, ansonsten lasse sie eingeblendet
Viele Grüße
Robert

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 15:43:22
Andreas
Hallo Robert,
ja es ist einfach nur nicht das gewünschte Ergebnis? Logikfehler?
Dein Code oben sagt:
Wenn in der Spalte Bis "ohne" steht, blende die Zeile aus, ansonsten lasse sie eingeblendet
es soll gerade umgekehrt sein
wenn in der Spalte Bis "ohne" steht soll sie auch eingeblendet bleiben
Viele Grüße Andreas

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 15:59:52
Robert
Hallo Andreas,
dachte ich mir fast, Logikfehler...
Bisher funktioniert der Code, in dem er sagt, wenn die Daten Außerhalb der Range liegen, dann verstecke die Zeilen.
Um die zusätzliche bedingung einzubauen muss man die Logik umkehren. Das bedeutet, wenn die Daten innerhalb liegen, lasse sie eingeblendet, ansonsten blende aus.
Sieht dann so aus: (die Größer kleiner Zeichen sind jetzt andersrum und die Aktionen mit .hidden sind vertauscht). Ich nehme an wenn das Startdatum nicht passt, soll der Bereich trotz "ohne" nicht angezeigt werden (deswegen die Klammer um die OR Bedingung)?
Option Explicit
Sub DatenAusblenden()
Application.ScreenUpdating = False
Dim i As Integer
Dim VonSpalte As Integer
Dim BisSpalte As Integer
Dim StartDatum As Range
Dim EndDatum As Range
Set StartDatum = Range("F11")
Set EndDatum = Range("G11")
VonSpalte = 6 'Spalte "Zeitraum Von" als Nummer
BisSpalte = 7 'Spalte "Zeitraum Bis" als Nummer
For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Cells(i, VonSpalte) >= StartDatum And (Cells(i, BisSpalte) <= EndDatum Or Cells(i, _
BisSpalte) = "ohne") Then
Rows(i).EntireRow.Hidden = False
Else
Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
End Sub

ungetestet, sollte aber klappen.
Viele Grüße
Robert

Anzeige
AW: Makro Zeilen ausblenden bei 2 Bedingungen
04.08.2014 16:13:51
Andreas
Hallo Robert,
ja das war es was ich wollte
klappt bestens
vielen herzlichen Dank Du hast mir sehr geholfen
Damit ist mein Anliegen gelöst
liebe Grüße vielleicht bis bald
Andreas

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro zum Ausblenden von Zeilen bei Bedingungen in Excel


Schritt-für-Schritt-Anleitung

  1. Makro öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)".
    • Wähle Einfügen > Modul.
  3. Makro-Code eingeben: Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub DatenAusblenden()
       Application.ScreenUpdating = False
       Dim i As Integer
       Dim VonSpalte As Integer
       Dim BisSpalte As Integer
       Dim StartDatum As Range
       Dim EndDatum As Range
       Set StartDatum = Range("F11")
       Set EndDatum = Range("G11")
       VonSpalte = 6 'Spalte "Zeitraum Von" als Nummer
       BisSpalte = 7 'Spalte "Zeitraum Bis" als Nummer
       For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
           If Cells(i, VonSpalte) >= StartDatum And (Cells(i, BisSpalte) <= EndDatum Or Cells(i, BisSpalte) = "ohne") Then
               Rows(i).EntireRow.Hidden = False
           Else
               Rows(i).EntireRow.Hidden = True
           End If
       Next i
       Application.ScreenUpdating = True
    End Sub
  4. Schaltfläche hinzufügen:

    • Wechsle zurück zu Excel.
    • Füge unter Entwicklertools > Einfügen eine Schaltfläche hinzu.
    • Verknüpfe die Schaltfläche mit dem erstellten Makro.
  5. Daten eingeben: Gib in Zelle F11 dein Startdatum und in G11 dein Enddatum ein.

  6. Makro ausführen: Klicke auf die Schaltfläche, um die Zeilen gemäß den Bedingungen auszublenden.


Häufige Fehler und Lösungen

  • Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt":

    • Stelle sicher, dass du die Zellen F11 und G11 korrekt mit Set initialisiert hast.
  • Zeilen werden nicht korrekt ausgeblendet:

    • Überprüfe die Bedingung im Code. Es könnte ein Logikfehler vorliegen. Achte darauf, dass die Vergleichsoperatoren richtig gesetzt sind.

Alternative Methoden

Statt ein Makro zu verwenden, kannst du auch den Autofilter in Excel nutzen, um Zeilen auszublenden, wenn eine Bedingung erfüllt ist. Dies ist jedoch weniger flexibel, wenn du mehrere Bedingungen hast. Der VBA-Ansatz ist effektiver, um spezifische Zeilen auszublenden, basierend auf deinen Kriterien.


Praktische Beispiele

Angenommen, du hast folgende Daten in den Spalten F und G:

F (Startdatum) G (Enddatum)
03.03.2014 05.03.2014
10.03.2014 19.03.2014
24.03.2014 30.03.2014

Wenn du in F11 das Datum 01.03.2014 und in G11 das Datum 30.03.2014 eingibst und das Makro ausführst, werden nur die Zeilen angezeigt, die die Bedingungen erfüllen (F >= 01.03.2014 und G <= 30.03.2014).


Tipps für Profis

  • Optimierung des Codes: Du kannst den Code optimieren, indem du Variablen für die Spaltennummern verwendest, um die Lesbarkeit zu erhöhen.
  • Fehlerüberprüfung: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass der Code bei unerwarteten Eingaben nicht abstürzt.
  • Dokumentation: Kommentiere deinen Code, um die Funktionsweise für andere Benutzer verständlich zu machen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro auf mehreren Tabellenblättern anwenden? Du musst das Makro in jedes Tabellenblatt einfügen, oder du kannst es in Diese Arbeitsmappe speichern und es dann entsprechend aufrufen.

2. Was mache ich, wenn sich die Spaltennummern ändern? Passe die VonSpalte und BisSpalte Variablen im Code an die neuen Spaltennummern an.

3. Kann ich das Makro anpassen, um mehr Bedingungen zu berücksichtigen? Ja, du kannst die If-Bedingungen im Code erweitern, um zusätzliche Kriterien hinzuzufügen.

Nutze diesen Leitfaden, um effektiv Excel-Zeilen auszublenden, wenn Bedingungen erfüllt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige