excel Spalten unter einer Bedingung ausblenden?

3 Antworten

Hallo,

das Ausblenden der Spalten mit Summenbedingung erledigt der folgende Code. Nur die Frage wann er ausgeführt werden soll ist noch offen

Sub BedingtSpaltenausblenden()
Dim startSpalte As String, endSpalte As String, iSpalte As String
Dim SStart As Long, SEnde As Long, iZeile As Long

startSpalte = "C" 'Start und Ende an deine Tabelle anpassen
endSpalte = "E"

SStart = ActiveSheet.Range(startSpalte & 1).Column
SEnde = ActiveSheet.Range(endSpalte & 1).Column
If SStart > SEnde Then
    MsgBox "Das Ende liegt vor dem Anfang, der Vorgang wird abgebrochen"
    Exit Sub
End If

For i = SStart To SEnde
    ActiveSheet.Columns(i).Hidden = False
    iSpalte = ActiveSheet.Cells(1, i).Address(True, False)
    iSpalte = Left(iSpalte, InStr(1, iSpalte, "$") - 1)
    iZeile = ActiveSheet.Range(iSpalte & Rows.Count).End(xlUp).Row
    If Application.WorksheetFunction.Sum(ActiveSheet.Range(iSpalte & 1 & ":" & iSpalte & iZeile)) = 0 Then
        ActiveSheet.Columns(i).Hidden = True
    End If
Next i

End Sub

flops123 
Beitragsersteller
 20.11.2020, 10:59

Ich Sitz leider nicht mehr vor dem pc! Danke dir ich schau es mir in 3 Stunden an! Die Frage wann es ausgeführt wird ist nicht so wichtig. Kann ich ja auch manuell machen vielen Dank für die schnelle Hilfe

DanKirpan  20.11.2020, 11:03
@flops123

Bitte,^^ ok ja wenn du es ohnehin manuell ausführst ist es egal

flops123 
Beitragsersteller
 20.11.2020, 11:04
@DanKirpan

Also am coolsten wäre natürlich wenn das Konstnt prüft und das anpasst sobald sich was verändert...

DanKirpan  20.11.2020, 11:20
@flops123

Ein automatisieren wäre möglich. Dazu im VBA-Editor das Tabellenblatt öffnen (im Projektexplorer links die Tabelle doppelklicken), mit den Dropdowns wählen wann er ausgeführt werden soll und den Code von oben ohne die erste und letzte Zeile reinkopieren.

Sub SpalteWeg()

ActiveSheet.Columns(5).Hidden = True

End Sub

Mit dem Beispielmakro wird Spalte 5 (also Spalte E) in der aktiven Tabelle komplett ausgeblendet

Filter nutzen, der nur die Zellen mit der Summe der Zeile ungleich null ausgibt.

Woher ich das weiß:Berufserfahrung – Arbeite im Controlling & (Personal)Management

flops123 
Beitragsersteller
 20.11.2020, 10:26

Ja das geht auch, ich würde allerdings gerne nicht immer auf die Filter zurück greifen, sondern das dass sheet bei Änderungen automatisch die entsprechenden Zeilen ein und ausblendet... danke trotzdem

floppydisk  20.11.2020, 10:31
@flops123

Ohne zumindest einen Knopfdruck für ein Macro wird das nicht so einfach gehen. Du musst ja erst einmal alle Zeilen eingeblendet haben, damit du die Daten einfügen kannst.

Der Filter dagegen passt auch automatisch an.

Ein weiteres Problem mit ausgeblendeten Zeilen ist, dass du die Daten nicht weiter verrechnen kannst. Die Formel Teilergebnis() geht beim Filter, nicht aber bei ausgeblendeten Zeilen.

flops123 
Beitragsersteller
 20.11.2020, 10:33
@floppydisk

Ne die Daten in den Zellen beziehen sich ja auf andere blätter

flops123 
Beitragsersteller
 20.11.2020, 10:36
@flops123

Ah sorry hab den zweiten Teil der Antwort nicht gesehen! Also sagst du, dass die ausgeblendeten Spalten nicht wieder eingefügt werden wenn sich was an den Daten ändert??

flops123 
Beitragsersteller
 20.11.2020, 10:40
@flops123

Also das wäre so meine Vorstellung, ich verändere etwas auf den referenzblättern, und die vorher verborgenen Spalten poppen auf, oder ich mach halt ein Makro, dass ich wenn ich die Daten alle eingetragen habe die leeren Spalten hinzufügt (es wird jede Woche ein neues sheet erstellt)