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

Forumthread: Zeilen ausblenden wenn 0 in Spalte A

Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:10:01
Martin
Hallo Leute!
Ich habe eine Tabelle mit 3000 Zeilen. Ich möchte nun jede Zeile ausblenden in der in der Spalte A eine 0 steht die durch eine Formel oder eine Funktion gereriert wird. Das Makro soll ausgeführt werden wenn ich auf das Blatt wechsle.
Ich hab im Netz zwar viel über das Thema gefunden, allerdings waren die Lösungen mit 3000 Zeilen sehr langsam oder ich hab sie für mein beispiel nicht anpassen können.
Ich hoffe ihr könnt mir helfen.
Danke schon jetzt dafür.
lg
martin

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:20:27
Lenhard
Moin Martin!
Schau mal hier:
https://www.herber.de/forum/archiv/144to148/t146665.htm
Ich habe daraus gerade das gemacht:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Long, laR As Long
laR = Cells(Rows.Count, 4).End(xlUp).Row
For i = laR To 1 Step -1
If Cells(i, 1).Text = "" Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next i
End Sub


....ist es das, was Du gesucht hast?!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:31:49
Martin
Hallo Lenhard!
Danke für deine schnelle Antwort!
Das Makro hab ich auch schon gefunden und ich hab auch versucht es anzupassen...
Allerdings schaff ich es nicht dass mir die Zeilen wirklich ausgeblendet werden wenn ich auf das Tabellenblatt klicke.
Auch dein Code funktioniert leider nicht. Ich gehe mit rechts auf das Tabellenbatt - Code anzeigen und füge es dort ein.
Geht nicht...
ich habs auch schon mit

Private Sub Worksheet_Activate()

versucht. Aber auch hier hatt ich keinen Erfolg.
Kannst du mir bitte nochmal helfen?
lg
Martin

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:08:00
Lenhard
Hallo nochmal Martin!!
Also bei mir hat es geklappt. Zwar nicht gerade, wenn man das Tabellenblatt auswählt (...das hatte ich leider in Deinen Ausführungen "überlesen". Sorry!) ...aber wenn man die Zellen verläßt.
Vielleicht liegt es an verschiedenen Excel-Versionen (...und dann müssen die Excel-Cracks hier im Forum ran!).
Rufe mal den VBA-Editor mittels "Alt+F11" auf und doppelklicke links auf das Klassenmodul des betreffenden Tabellenblattes im Dateibaum. Kopiere den Code in das Tabellenblatt unter "Option Explicit".
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:30:58
Lenhard
Hallo nochmal Martin!
Ich habe da mal kurz folgendes gebastelt. Kuckst Du hiär:
https://www.herber.de/bbs/user/49662.xls
Wenn Du im "Modul1" unter "Option Explicit" noch "Option Private Module" einfügst, erscheint das Makro "Ausblenden" nicht unter dem Menü > Extras > Makros usw. usw.
Das Makro "Ausblenden" wird aktiviert über dem Code...

Private Sub Worksheet_Activate()
Ausblenden
End Sub


...der nun im betreffenden Tabellenblatt "liegt".
Ich hoffe, dass Dir diese nun ein wenig weiterhilft!!!
Ich bin nun müd und geh zur Ruh (...muss morgen sehr früh hoch!!) und mache meine Äuglein zu!!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 09:26:00
Martin
Hallo Lenhard!
Danke für deine Antwort!
Es fuktioniert jetzt auch super! Allerdings ist das ganze immer noch ein bisschen langsam.
Mein Problem ist, das ich eben das Tabellenblatt auf dem das Macro angewendet werden soll mit einem Makro bis zu 200 mal ausdrucken lasse. Das Tabellenblatt ist voller sverweise die sich bei jedem druck entsprechend anpassen. es werden bei jedem druck auch unterschiedliche zeilen ausgeblendet.
hier liegt also mein problem. denn wenn jedesmal ca. 150 zeilen ausgeblendet werden, diese aber immer unterschiedlich sind, bin ich mit drucken eine halbe ewigkeit am weg.
Ich verwende ein makro zum zeilen löschen. das funktioniert dafür auch super! ich hab jetzt versucht das irgendwie anzupassen indem ich statt

EntireRow.Delete einfach EntireRow.Hide = True

gemacht habe
Das wäre von der Geschwindigkeit her perfekt, allerdings funktioniert es auch nicht ganz. es blendet mir zwar die zeilen aus, aber es verschiebt mir die inhalte in die ersten zeilen und damit kann ich den ganzen aufbau des blattes vergessen. die werte müssen in den jeweiligen zellen stehen bleiben.
hier das makro:


Sub Ausblenden2()
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub

Ich bin in VBA leider zu schach um das zu verstehen. Kannst du mir hier weiterhelfen?
Ich habe noch eine Beispieldatei angehängt an der man erkennen soll was das Makro macht. Es läuft momentan über eine Schaltfläche da man sonst nicht sieht was es tut.
https://www.herber.de/bbs/user/49669.xls
Danke
LG
Martin

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 15:19:08
Chris
Servus Martin,
so:

Sub Ausblenden2()
'Bestimmte Zeilen ausblenden
'wenn 0 in Spalte B
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub


einfach das Sortieren rausnehmen.
(.CurrentRegion.Sort...)
Gruß
Chris

Anzeige
Danke!!! Funktioniert!!!
08.02.2008 09:30:32
Martin
Hallo Chris, Strawberry und Lenhard!
Erstmal danke für eure Antworten und sorry dass ich mich erst jetzt melde!!! Aber ich hab die letzten Tage vollstress gehabt. Jetzt gehts wieder besser!
Chris! Super danke! Es funktioniert ohne das sortieren perfekt und auch so schnell wie ich mir das vorstelle.
Lenhard! Danke für deine Hilfe! Es stimmt schon dass dein Vorschlag funktioniert hat, aber das Makro geht alle Zeilen nacheinander druch und überprüft sie. Das dauert mir bei 3000 Zeilen einfach zu lange da ich das Blatt per makro bis zu 200 mal mit immer anderen Werten drucken lasse und bei jedem druck ändern sich die Zeilen die ausgeblendet werden sollen.
Strawberry! Danke für den Tipp mit der Berechnung. Leider funktioniert das auch nicht da sich auf dem Blatt und in der ganzen Mappe jederzeit etwas berechnet werden muss.
Ich habe auch das Problem gelöst das die Zeilen die ausgeblendet sind sich wieder einblenden wenn sich der Wert in der Spalte A durch eine WENN Funktion ändert. Ich hab den Code einfach nochmal verwendet um die Spalte nach 1 zu überprüfen und die Zeilen dann einblenden lassen.
Alle Zeilen werden gleichzeitig ein- und ausgeblendet.
Lösung:
Ich habe diesen Code in ein Modul geschrieben:

Sub Ausblenden()
'Zeilen ausblenden wenn 0 und einblenden wenn 1 in Spalte A steht
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
'Einblenden
.FormulaR1C1 = "=if(RC2=1,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = False
'Ausblenden
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub

Und mit diesem Code starte ich das Modul bei Klick auf das Tabellenblatt:


Private Sub Worksheet_Activate()
Ausblenden
End Sub

Das funktioniert einwandfrei!
Nochmals, vielen dank euch dreien!
lg
Martin

Anzeige
AW: kleine Anmerkung
08.02.2008 14:14:00
Chris
Servus Martin,
aber trotzdem vorsicht, das Makro ist schnell, weil es nur die Specialcells abarbeitet, die in der zusätzlich eingefügten Spalte eingetragen wurden, und genau beim Einfügen der Spalte kann es zu Problemen kommen, wenn in Spalte 256 ("IV") schon Einträge sind.
Dann kann nämlich keine Spalte mehr eigefügt werden.
Gruß
Chris

Anzeige
AW: kleine Anmerkung
08.02.2008 19:13:00
Martin
Hallo Chris!
Das Problem hab ich nicht da ich maximal 90 Spalten verwende!
Aber trotzdem vielen dank für deine Info! Beim nächsten mal könnte es ja wirklich vorkommen.
Schönen Abend und schönes Wochenende
lg
Martin

AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 15:59:23
Lenhard
Moin Martin! ...und auch Chris!!
Vorweg: Tschuldige, dass ich mich erst jetzt melde!! ...aber es gibt ja auch Zeiten, in denen ich mein Geld verdienen muss :-)))
Weiter: Ich bin leider - noch - nicht der VBA-Crack. Ich bastel mir selber ziemlich viel aus dem Forum zusammen und bin immer noch dabei, gewisse Logik-Zusammenhänge verstehen zu wollen.
Nun aber! ...ich habe den Vorschlag von Strawberry, wegen Deinem "Geschwindigkeitsproblem" (...da wirst Du wahrscheinlich mit Sicherheit nicht geblitzt! Kleiner Scherz!) die automatische Berechnung auszuschalten, gerade mal durchgelesen. Interessanter Ansatz und ich glaube, das könnte funktionieren.
Aber wie sieht es denn mit Deiner Dateigröße sowie den gesamten Funktionen in dieser aus? ...und wie sieht es mit Deiner Rechnerleistung aus?! Das sind ja alles Kriterien, die die Geschwindigkeit entscheidend beeinflussen. Ich persönlich versuche bei meinen Planungen für Excel-Dateien immer Strukturen zu finden, die möglichst wenig System-Ressourcen in Anspruch nehmen.
-----
Ich habe noch mal meinen und Deinen letzten Ansatz (mit dem Hinweis von Chris, das "Sortieren" auszukommentieren bzw. rauszunehmen!!) getestet. Ich finde, gemäß Deinen Fragestellungen funktioniert es doch alles. Oder?!?!? ....sonst müßtest Du Dir bitte noch mal die Mühe machen, es noch mal konkreter Darzustellen. Sorry!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:34:00
Strawberry
Hi Martin,
ein Ansatz:

Sub BestimmteZeilenAusblenden()
'Zeilen automatisch ausblenden (bzw. einblenden), wenn in der Spalte B bestimmte Werte stehen ( _
bsp. All).
Dim rng As Range
For Each rng In Range(Cells(1, 2), Cells(65536, 2).End(xlUp))   '2 = Spalte B
If LCase(rng) = "0" Then                                      'Kriterium = 0
rng.EntireRow.Hidden = True
Else
rng.EntireRow.Hidden = False
End If
Next rng
End Sub


Grüße

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:07:12
Martin
Hallo Strawberry!
Danke für deine Hilfe!
Allerdings hab ich auch hier das Problem, dass es mir die Zeilen nicht ausblendet wenn ich auf das Blatt klicke.
Wenn ich das Makro mit einer Schaltfläche ausführe, werden mir die Zeilen zwar ausgeblendet aber nicht mehr eingeblendet wenn nichts mehr in B steht. Ausserdem läuft es ziemlich langsam Zeile für Zeile durch.
Gibt es eventuell noch eine andere Variante?
danke schon mal im vorraus
lg
Martin

Anzeige
Versuch mal ...
06.02.2008 09:48:00
Strawberry
die automatische Berechnung auszuschalten, indem du auf manuelle Berechnung umstellst. Damit habe ich bei komplexeren Aufgaben mit Makros sehr gute Erfahrungen gemacht.
Grüße
Strawberry

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel ausblenden, wenn in Spalte A der Wert 0 steht


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen auszublenden, wenn der Wert in Spalte A gleich 0 ist, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Sub Ausblenden()
       ' Zeilen ausblenden, wenn 0 in Spalte A steht
       Dim i As Long
       Dim laR As Long
       laR = Cells(Rows.Count, 1).End(xlUp).Row
       For i = 1 To laR
           If Cells(i, 1).Value = 0 Then
               Rows(i).Hidden = True
           Else
               Rows(i).Hidden = False
           End If
       Next i
    End Sub
  4. Verknüpfe das Makro mit dem Tabellenblatt:

    • Doppelklicke auf das Tabellenblatt im VBA-Editor und füge den folgenden Code ein:
      Private Sub Worksheet_Activate()
      Ausblenden
      End Sub
  5. Speichere die Datei als Makro-fähige Datei:

    • Speichere die Excel-Datei als .xlsm, um das Makro zu behalten.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht automatisch ausgeführt
    Überprüfe, ob Du den Code im richtigen Klassenmodul des Arbeitsblatts eingefügt hast.

  • Fehler: Zeilen werden nicht ausgeblendet
    Stelle sicher, dass die Werte in Spalte A tatsächlich 0 sind, und dass Du das Makro korrekt implementiert hast.

  • Leistung: Langsame Ausführung bei vielen Zeilen
    Optimiere den Code, indem Du nur SpecialCells verwendest:

    Sub SchnellesAusblenden()
      On Error Resume Next
      Dim rng As Range
      Set rng = Columns(1).SpecialCells(xlCellTypeConstants, 4)
      If Not rng Is Nothing Then
          rng.EntireRow.Hidden = True
      End If
      On Error GoTo 0
    End Sub

Alternative Methoden

  • Formelbasierte Methode: Du kannst auch eine Hilfsspalte verwenden:

    1. In einer neuen Spalte (z.B. B) verwendest Du die Formel:
      =WENN(A1=0;"";A1)
    2. Filtere die Daten dann nach dieser Spalte, um die Zeilen mit 0 auszublenden.
  • Automatisches Ausblenden ohne Makro: Verwende die Datenfilterung:

    1. Markiere die Spalte A und gehe zu "Daten" > "Filter".
    2. Wähle "Zahlenfilter" > "Ist ungleich" und gib 0 ein.

Praktische Beispiele

Beispiel 1: Einfaches Makro
Sub AusblendenWenn0()
    Dim i As Long
    For i = 1 To 3000
        If Cells(i, 1).Value = 0 Then
            Rows(i).Hidden = True
        End If
    Next i
End Sub
Beispiel 2: Schnelles Ausblenden
Sub SchnellesAusblenden()
    Dim rng As Range
    Set rng = Columns(1).SpecialCells(xlCellTypeConstants, 4)
    If Not rng Is Nothing Then
        rng.EntireRow.Hidden = True
    End If
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang Deines Makros, um die Leistung zu steigern, und setze es am Ende wieder auf True.
  • Denke daran, Excel in den manuellen Berechnungsmodus zu versetzen, um die Geschwindigkeit zu erhöhen, wenn Du viele Berechnungen hast.

FAQ: Häufige Fragen

1. Wie kann ich die ausgeblendeten Zeilen wieder einblenden?
Verwende eine ähnliche Logik im Makro und setze Rows(i).Hidden = False für die Zeilen, die Du einblenden möchtest.

2. Kann ich das Makro so anpassen, dass es beim Öffnen der Datei automatisch ausgeführt wird?
Ja, Du kannst das Makro in das ThisWorkbook-Modul im VBA-Editor unter Workbook_Open() einfügen.

3. Funktioniert das auch in Excel Online?
Nein, VBA-Makros werden nur in der Desktop-Version von Excel unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige