Spalten basierend auf Inhalt ausblenden (Summe der Zeilen)

Spalten basierend auf Inhalt ausblenden (Summe der Zeilen)

Ich versuche, Spalten basierend auf der Summe der ausgewählten Zeilen (d. h. Zellen) in diesen Spalten auszublenden.

Wenn beispielsweise die Summe von E9:E12 0 ist, dann Spalte E ausblenden.

Darüber hinaus, und das ist wahrscheinlich etwas schwieriger, müssen Sie, wenn eine Spalte nicht ausgeblendet werden soll, sicherstellen, dass die nächste Spalte nicht ausgeblendet wird, selbst wenn die Summe der entsprechenden Zeilen null ist.

Beispiel: Wenn die Summe von E9:E12 ungleich 0 ist, dann wird E nicht ausgeblendet und Spalte F wird nicht ausgeblendet, auch nicht, wenn die Summe von F9:F12 null ist.

Antwort1

Dies erfordert natürlich etwas VBA. Ich sehe ein potenzielles Problem mit Ihrer Logik, aber das VBA wird genau das tun, was Sie angefordert haben. Ich werde am Ende auf das Problem eingehen.

Öffnen Sie Ihr VBE mit Strg+F11 und erstellen Sie ein neues Modul für Ihre Arbeitsmappe. Fügen Sie in diesem Modul Folgendes hinzu:

Sub hideColumns()
    Dim ws as Worksheet
    Set ws = Sheets("YOUR SHEET NAME") '<--CHANGE THIS TO YOUR SHEET

    Dim col As Range
    Dim row, sum As Integer

    'loop through every column in the worksheet
    For Each col In ws.Columns

        'Resetting the sum for this column
        sum = 0

        'Loop through rows 9 to 12 to get their sum
        For row = 9 To 12 '<--Rows that you want to sum in each column
            sum = sum + ws.Cells(row, col.Column).Value
        Next row

        'Only hide the column if the sum is 0 and previous column is not hidden
        '    OR if the sum is 0 and this is the first column (there would be no previous column)        
        col.Hidden = ((sum = 0) And Not Cells(1, col.Column - 1).Hidden) Or ((sum = 0) And col.Column = 1)

    Next col
End Sub

Nun zum Problem: Wir durchlaufen jede Spalte und sagen, dass wir erst in Spalte 3 auf eine Summe von 0 stoßen. Da Spalte 2 dann sichtbar ist, verbergen wir nach Ihrer Logik Spalte 3 nicht. Wiederholen Sie dies, bis Sie das Ende des Blatts erreichen. Im Wesentlichen schließt die von Ihnen skizzierte Logik Spalten, bis sie auf eine Spalte mit einer Summe von 0 stößt. Wenn diese Spalte mit einer Summe von 0 Spalte 1 ist, dann wird nichts verborgen. Wenn dies nicht Ihr gewünschtes Verhalten ist, lassen Sie es mich wissen und ich kann es umschreiben, um es für Sie so zu gestalten.

verwandte Informationen