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

Forumthread: Spalten einblenden wenn Bedingung erfüllt

Spalten einblenden wenn Bedingung erfüllt
21.05.2015 14:37:30
Judith
Hallo zusammen,
ich stehe mal wieder vor einem Problem, bei dem ich nicht weiter komme und hoffe auf eure Hilfe.
Meine Datei zeigt die Übersicht für verschiedene Kostenarten für alle 12 Monate an. Um die Übersicht zu erleichtern soll immer nur die Spalten C und D, der aktuelle Reportmonat sowie die Jahresübersicht am Ende der Tabelle (Spalten AS to AV) eingeblendet werden. Der aktuelle Reportmonat wird mittels vorherhiger Abfrage in Zelle B1 geschrieben.
Wenn möglich sollen ebenfalls alle Formeln in dem eingeblendeten Bereich in Werte umgewandelt werden. Beispiel: Für den März sollen nur die Spalten C und D, N bis S sowie AS bis AV sichtbar sein. Hier ist die Beispieldatei:
https://www.herber.de/bbs/user/97758.xlsx
Mit case.select würde ich es wahrscheinlich hinbekommen, aber wenn möglich möchte ich es vermeiden 12 verschiedene Fälle zu definieren. Habt ihr vielleicht eine andere Idee? Ich habe es mit intersect versucht, aber da bin ich mit meinen VBA-Kenntnissen an meine Grenzen gestossen.
Viele Grüße,
Judith

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten einblenden wenn Bedingung erfüllt
21.05.2015 14:50:32
Rudi
Hallo,
leere Zeilen/ Spalten haben in solchen Listen nichts zu suchen.
Wenn jemand auf 'sortieren' klickt, ist alles im Eimer.
Überdenke dein Konzept.
Gruß
Rudi

AW: Spalten einblenden wenn Bedingung erfüllt
21.05.2015 14:55:52
Judith
Hallo Rudi,
Es handelt sich hierbei um ein vorgegebenes Format, das ich nicht verändern kann. Eventuell könnte ich Hilfseingaben in Zeile 2 einbauen, so dass jede Spalte in Zeile 2 den entsprechenden Monatsnamen trägt. Das oben beschriebene Grundproblem bleibt damit aber bestehen.
Viele Grüße,
Judith

Anzeige
Nur Monats-Spalten und Jahrestotal einblenden
21.05.2015 15:06:06
NoNet
Hallo Judith,
klicke mit der rechten Maustaste auf den Namen des Blattes im Blattregister unten und wähle den Befehl "Code anzeigen..." aus.
Damit gelangst Du in das Codemodul des Tabellenblattes.
Kopiere dort diesen gesamten Code hinein :
Private Sub Worksheet_Change(ByVal Target As Range)
'Check if Cell B1 has been edited / changed
If Not Intersect(Target, [B1]) Is Nothing Then Show_Only_Relevant_Month_and_Total
End Sub
Sub Show_Only_Relevant_Month_and_Total()
Dim lngCol As Long, lngEnd As Long
'Show_All_Columns
Show_All_Columns
If Application.CountIf([3:3], [B1]) > 0 Then
'Get last column (YTD) in row 4
lngEnd = Cells(4, Columns.Count).End(xlToLeft).Column - 4
'Retrieve column of relevant month
lngCol = Application.Match([B1], [3:3], 0)
'Show relevant column and total (YTD)
Columns(5).Resize(, Columns.Count - 4).EntireColumn.Hidden = True
Columns(lngCol).Resize(, 4).EntireColumn.Hidden = False
Columns(lngEnd).Resize(, 4).EntireColumn.Hidden = False
End If
End Sub
Sub Show_All_Columns()
'Show all columns
Columns.EntireColumn.Hidden = False
End Sub
Wird der Wert der Zelle B1 geändert, dann wird der entsprechende Monat in Zeile 3 gesucht und falls gefunden nur dieser (und das Jahres-Gesamt) eingeblendet, ansonsten wieder alles (z.B. wenn Zelle B1 geleert wird).
Salut, NoNet

Anzeige
AW: Spalten einblenden wenn Bedingung erfüllt
21.05.2015 15:12:01
Rudi
Hallo,
Sub aaa()
Dim i As Long
Application.ScreenUpdating = False
Columns.Hidden = True
For i = 5 To 40 Step 5
If Cells(3, i) = Cells(1, 2) Then
Cells(3, i).MergeArea.EntireColumn.Hidden = False
Columns(i - 1).Hidden = False
Columns(i + 4).Hidden = False
End If
Next
Columns("A:D").Hidden = False
Columns("AS:AV").Hidden = False
Application.Goto Range("A1"), True
End Sub
Gruß
Rudi

Anzeige
AW: Spalten einblenden wenn Bedingung erfüllt
21.05.2015 15:42:15
Judith
Vielen Dank Rudi und NoNet, beide Makros funktionieren bestens ! Ihr seid spitze!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalten einblenden, wenn Bedingung erfüllt


Schritt-für-Schritt-Anleitung

Um bestimmte Spalten in Excel anzuzeigen, wenn eine Bedingung erfüllt ist, kannst du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne deine Excel-Datei und klicke mit der rechten Maustaste auf den Namen des Arbeitsblattes, in dem du die Änderungen vornehmen möchtest.

  2. Wähle "Code anzeigen..." aus dem Kontextmenü.

  3. Kopiere den folgenden VBA-Code in das Codemodul:

    Private Sub Worksheet_Change(ByVal Target As Range)
        ' Überprüfen, ob Zelle B1 geändert wurde
        If Not Intersect(Target, [B1]) Is Nothing Then Show_Only_Relevant_Month_and_Total
    End Sub
    
    Sub Show_Only_Relevant_Month_and_Total()
        Dim lngCol As Long, lngEnd As Long
        ' Alle Spalten einblenden
        Show_All_Columns
        If Application.CountIf([3:3], [B1]) > 0 Then
            ' Letzte Spalte (Jahresübersicht) in Zeile 4 abfragen
            lngEnd = Cells(4, Columns.Count).End(xlToLeft).Column - 4
            ' Monatsspalte abrufen
            lngCol = Application.Match([B1], [3:3], 0)
            ' Relevante Spalte und Jahresübersicht einblenden
            Columns(5).Resize(, Columns.Count - 4).EntireColumn.Hidden = True
            Columns(lngCol).Resize(, 4).EntireColumn.Hidden = False
            Columns(lngEnd).Resize(, 4).EntireColumn.Hidden = False
        End If
    End Sub
    
    Sub Show_All_Columns()
        ' Alle Spalten einblenden
        Columns.EntireColumn.Hidden = False
    End Sub
  4. Schließe den VBA-Editor und teste das Makro, indem du einen Monat in Zelle B1 eingibst.


Häufige Fehler und Lösungen

  • Fehler: Spalten werden nicht eingeblendet.

    • Lösung: Stelle sicher, dass der eingegebene Monat in Zeile 3 vorhanden ist. Der Monat muss exakt mit dem übereinstimmen, was in Zeile 3 steht.
  • Fehler: Makro funktioniert nicht.

    • Lösung: Überprüfe, ob Makros in deiner Excel-Installation aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trust Center" und aktiviere die Makros.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Funktion "Daten filtern" in Excel nutzen, um nur die relevanten Zeilen anzuzeigen. Du kannst manuell die Spalten ausblenden, die du nicht benötigst.

  1. Wähle die Zeile aus, die die Monatsnamen enthält.
  2. Aktiviere den Filter über "Daten" > "Filtern".
  3. Wähle nur die Monate aus, die du anzeigen möchtest.

Praktische Beispiele

  • Beispiel 1: Wenn der aktuelle Monat "März" in Zelle B1 steht, werden nur die Spalten C und D, sowie die Jahresübersicht (Spalten AS bis AV) angezeigt.

  • Beispiel 2: Ändere den Wert in Zelle B1 auf "April", um die entsprechenden Spalten für den April anzuzeigen.


Tipps für Profis

  • VBA-Optimierung: Wenn du viele verschiedene Bedingungen hast, könntest du eine Schleife verwenden, um die Spalten dynamisch zu steuern, anstatt für jeden Monat einen eigenen Fall zu definieren.

  • Versteckte Spalten: Du kannst die Sichtbarkeit von Spalten effizient steuern, indem du sie in Gruppen zusammenfasst. So kannst du die "Spalte A in Excel einblenden" oder andere benötigte Spalten einfacher steuern.


FAQ: Häufige Fragen

1. Wie kann ich die Sichtbarkeit von Zellen in Excel steuern?
Verwende VBA, um Zellen basierend auf bestimmten Bedingungen ein- oder auszublenden. Die oben genannten Makros sind dafür eine gute Grundlage.

2. Funktioniert das Makro auch in Excel Online?
Nein, VBA-Makros funktionieren nur in der Desktop-Version von Excel. In Excel Online kannst du nur mit den Filterfunktionen arbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige