Excel: Zeilen bedingt ausblenden
Hallo! Wieder hab ich eine Frage zu meinem Excel Spreadsheet:
Ich habe mir in den Kopf gesetzt (ohne zu wissen ob/wie es möglich ist), dass ich Zeilen im Spreadsheet ausblenden möchte.
Ich trenne hier "Spreadsheet" und "Tabelle" mit Absicht. Wenn ich "Spreadsheet schreibe, meine ich das gesamte Blatt, "Tabelle" meint eine kleine Tabelle im Spreadsheet.
Zum Speadsheet an sich: Es besteht aus einem Feld am oberen Rand, in dem Werte vermerkt werden.
Darunter befindet sich eine große Tabelle, die u.a. diese Werte als Ergebnis einer Gleichung darstellt. Unter dieser großen Tabelle befinden sich weitere Felder, die auf die Ergebnisse in der Tabelle einfluss nehmen.
Beispielsweise könnte man sagen:
Das obere Feld beinhaltet Einnahmen - die Felder unter der Tabelle Kosten. Die Tabelle verrechnet dann Kosten mit Einnahmen und vergleicht diese. So könnte man z.B. mehrere Szenarien austesten.
Im obersten Feld werden also bspw. 1000€ eingetragen. Im ersten Feld unter der Tabelle 200, im zweiten 500, etc. (Macht jetzt so keinen Sinn, weil man sofort sieht, was mehr Gewinn bringen würde, ist in der Tabelle aber viel komplexer, sodass es sinnvoll ist). Die Tabelle spuckt dann in der ersten Zeile aus, dass wir 800€ Gewinn haben, die zweite Zeile 500€. durch bedingte Formatierung sagt mir die Tabelle jetzt, dass 800€ besser sind als 500€ (wie gesagt, klingt behämmert, aber einfacher kann mans nicht erklären).
In der Realität werden es aber bis zu 100 Szenarien, sodass in den Feldern unter der Tabelle bis auf die ersten 2 Zellen immer 0 steht und dadurch die Ergebnisse in der Tabelle Zahlen werden wie: 800, 500, 1000, 1000, 1000, 1000, ... . Dadurch wird das ganze Ding unnötig groß und sieht nicht mehr ansehbar aus.
Meine Idee wäre jetzt, dass ich die Zeilen 3-100 in der Tabelle, sowie die Felder 4-100 ausblende, wenn im Feld 4 unter der Tabelle nichts steht. Wenn ich dort etwas eintrage, werden Feld 5 unter der Tabelle, sowie Zeile 4 in der Tabelle aufgedeckt.
Ich hoffe, die Erklärungen sind einigermaßen schlüssig. Zum Ende noch: Ich habs auf google schon probiert und rausgefunden, dass das so einfach nicht funktioniert. Wenn es jetzt über irgendwelche Makros (oder noch komplizierter) gehen wird, bitte ich euch, es so idiotensicher, wie nur möglich, zu erklären.
Weiterhin hab ich nicht vor, die Zellen einfach weiß zu machen und die Schrift auch weiß. Ich möchte, dass die Zellen wirklich verschwinden, sodass alles etwas zusammenrückt.
Ich hoffe ihr könnt mir helfen. (=
Bis dahin
Pepsi (=
2 Antworten
Wenn du weißt was drin stehen muss, um die Bedingung für's Ausblenden zu erfüllen, dann ist es am einfachsten, eine bedingte Formatierung zu machen, die Schrift- und Hintergrundfarbe gleich setzt. So wird die Tabelle nicht kleiner, aber es bleiben nur die für dich wichtigen Zellinhalte sichtbar.
Alternativ eine neue Tabelle, die die Zellen der jetzigen Tabelle in Abhängigkeit ihres Inhaltes übernimmt und gleichzeitig Leerzeilen ausläßt. Das ist über (teilw. komplexe) Formeln zu lösen.
Wie schon in der Frage gesagt:
"Weiterhin hab ich nicht vor, die Zellen einfach weiß zu machen und die Schrift auch weiß. Ich möchte, dass die Zellen wirklich verschwinden, sodass alles etwas zusammenrückt."
Bedingte Formatierung fält also aus.
Das mit mehreren Tabellen habe ich zZ, aber es ist einfach eine extrem unübersichtliche und sehr einschränkende Lösung.
Das ist tatsächlich sehr kompliziert. Makros sind da der einzige weg wenn das von den Eingaben abhängig laufen soll. Aber dazu würde ich diese Frage mal in einem Exel Forum stellen.
Makros übersteigen leider auch meine Kenntnisse, so das ich dir nur zum speziellen Forum raten kann.. sry =)
Hallo!
Das Makro hat nur 3 Zeilen.
Du hast ja keine Schwierigkeit, eine Formel zu basteln, die "weg" in eine Spalte schreibt (hier Spalte 10, also J), wenn die betreffende Zeile auszublenden ist. Wenn du eine andere Spalte magst, ändere die 10 in Cells (i, 10).
Mit Alt & F11 kommst du in den VBA-Editor.
Doppelklick auf die Tabelle, die du bearbeiten möchtest.
Wähle oben "Worksheet" und "Activate" aus. Das bedeutet, dass das Makro jedes Mal startet, wenn du auf diese Tabelle wechselst, Du könntest auch SelectionChange einstellen, dann läuft es bei jedem Sprung in eine andere Zelle, das könnte bei einer rechenintensiven Tabelle aber zu mühsamen Wartezeiten führen.
Hier die 3 Programmzeilen für Copy&Paste zwischen Private Sub und End Sub:
For i = 1 To 1000 ' nimm hier die maximal erwartete Zeilenanzahl
If Cells(i, 10) = "weg" Then Rows(i).Hidden = True Else Rows(i).Hidden = False
Next i
Das wars