Zeilen in Abhängigkeit von Zellwert ausblenden?
Hallo,
Ich habe eine Excel Datei mit 2 Arbeitsblättern ("QA Validation" Und "CSR Validation").
Wenn im Blatt "QA Validation" Zelle C8 nicht leer ist und der eingetragene Wert ungleich "no" ist möchte ich die Zeilen 11-28 im gleichen Blatt komplett ausblenden.
Ist die Zelle C8 leer oder enthält “no“ sollen alle Zeilen im Blatt sichtbar bleiben.
Zusätzlich würde ich gerne, wenn C8 = "no" ist prüfen, ob in Blatt "CA Validation" Zelle C15 = "yes" ist und dann die Zeilen 18 bis 28 im Blatt ausblenden.
Der nächste Schritt wäre dann im Blatt "CSR Validation" auszuführen.
Wenn der Wert Zelle C18 im Blatt CSR Validation = "yes" ist, möchte ich die Zeilen 21-31 komplett in Blatt CSR Validation ausblenden.
Kann mir jemand helfen?
Was meinst Du mit "komplett ausblenden"? Zellinhalt löschen? Zelle verschwinden lassen gibt es nicht.
Mit komplett ausblenden, meinte ich die Funktion Zeile ausblenden (Hide). Der Inhalt der Zellen muss erhalten bleiben.
1 Antwort
So eine Aufgabenstellung lässt sich in Excel meines Wissens nur per Makro lösen, da es keine entsprechende Excel-Funktion =AUSBLENDEN() gibt. Ich kenne eine solche Funktion aus einem Business-Intelligence-Programm, aber in Excel gibt es das nicht. Hier müsstest du ein Makro für die entsprechenden Zellen bauen und jeden einzelnen Fall abfragen, da die auszublendenden Zeilen immer variieren.
Für das erste Beispiel müsste im jeweiligen Tabellenblatt im VBA-Editor (zu erreichen mit Alt-F11) im Segment Worksheet unter dem Trigger "Activate" zum Beispiel der folgende Code eingefügt werden. Der Code würde dann immer beim Wechsel auf das Tabellenblatt (also beim Aktivieren des Tabellenblatts) ausgeführt werden.
Alt-F11 drücken
Links im Projekt-Explorer Doppelklick auf den Namen des Tabellenblatts. Rechts hast du einen großen leeren Bereich. Dort den folgenden Code reinkopieren und das Blatt als .XLSM speichern:
Private Sub Worksheet_Activate()
If Range("C8").Value = "no" Or Range("C8").Value = "" Then
Rows("11:28").Select
Selection.EntireRow.Hidden = True
Else
Rows("11:28").Select
Selection.EntireRow.Hidden = False
End If
End Sub
Hab da mal was anderes ausprobiert:
Private Sub Worksheet_Change(ByVal Target As Range)
'prüfen ob Zelle C8 leer
If Not Intersect(Target, Range("C8")) Is Nothing Then
'Zeilen einblenden
Cells.EntireRow.Hidden = False
'prüfen ob text ungleich no
If Range("C8").Value <> "no" Then
Rows("11:28").EntireRow.Hidden = True
'prüfen ob C8 leer
If Range("C8").Value = "" Then
Rows("11:28").EntireRow.Hidden = False
'prüfen ob Zelle C15 leer
If Not Intersect(Target, Range("C15")) Is Nothing Then
'Zeilen einblenden
Cells.EntireRow.Hidden = False
'prüfen ob C15 gleich yes
If Range("C15").Value = "yes" Then
Rows("18:28").EntireRow.Hidden = True
End If
End If
End If
End If
End If
End Sub
Alles was sich auf Zelle C8 bezieht funktioniert. Das was sich auf C15 bezieht funktioniert nicht. Wie bekomme ich das hin?
Dann bleibt noch die Frage, wie bekomme ich es hin auch noch eine Aktion auf dem 2. Blatt auszuführen?
Schön dass es soweit geklappt hat. Du willst doch bei C15 auf das andere Tabellenblatt zugreifen, oder? Dann musst du statt
If Range("C15").Value = "yes" Then
auch das Workseet angeben:
If Worksheets("CA Validation").Range("C15").Value = "yes" Then
falls ich das oben richtig gelesen habe,
Ich habe mal oben im ersten Post das Skript ergänzt. Im Else-Teil werden die gleichen Zellen einfach wieder eingeblendet, also immer wenn C8 nicht "no" und nicht leer ist. Du kannst natürlich auch Rows("11:28").EntireRow.Hidden schreiben.
Hi,
danke.
Das klappt, allerdings bleiben die Zellen auch ausgeblendet, wenn was anderes in C8 steht...
Und wie bekomme ich das hin unterschiedliche Aktionen (siehe oben) in beiden Blättern auszuführen?