Ocultar columnas según el contenido (suma de filas)

Ocultar columnas según el contenido (suma de filas)

Estoy intentando ocultar columnas según la suma de las filas seleccionadas (es decir, celdas) en esas columnas.

Por ejemplo, si la suma de E9:E12 es 0, oculte la columna E.

Además, y probablemente un poco más difícil: si una columna no se va a ocultar, asegúrese de que la siguiente columna no se oculte, incluso si la suma de sus filas correspondientes es cero.

Por ejemplo, si la suma de E9:E12 no es 0, entonces no oculte E ni la columna F, incluso si la suma de F9:F12 es cero.

Respuesta1

Obviamente, esto requerirá algo de VBA para lograrlo. Veo un problema potencial con su lógica, pero VBA hará exactamente lo que usted solicitó. Hablaré del problema al final.

Abra su VBE con Ctrl+F11 y cree un nuevo módulo para su libro de trabajo. En ese módulo agregue:

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

Ahora el problema: recorremos cada columna y digamos que no encontramos una suma de 0 hasta la columna 3... entonces, como la columna 2 es visible, según su lógica, no ocultamos la columna 3... repita hasta llegar al final de la hoja. Básicamente, la lógica que usted describe cerrará las columnas hasta que encuentre una columna con una suma de 0. Si esa columna con una suma de 0 es la Columna 1, entonces... nada se oculta. Si este no es el comportamiento que desea, hágamelo saber y podré reescribirlo para llevarlo allí.

información relacionada