Ocultar colunas com base no conteúdo (soma das linhas)

Ocultar colunas com base no conteúdo (soma das linhas)

Estou tentando ocultar colunas com base na soma das linhas selecionadas (ou seja, células) nessas colunas.

Por exemplo - se a soma de E9:E12 for 0, oculte a coluna E.

Além disso, e provavelmente um pouco mais difícil - se uma coluna não for ocultada, certifique-se de que a próxima coluna não seja ocultada, mesmo que a soma das linhas correspondentes seja zero.

Por exemplo - se a soma de E9:E12 não for 0, então não oculte E e não oculte a coluna F, mesmo que a soma de F9:F12 seja zero.

Responder1

Obviamente, isso exigirá algum VBA para funcionar. Vejo um possível problema com sua lógica, mas o VBA fará exatamente como você solicitou. Falarei sobre o problema no final.

Abra seu VBE com Ctrl+F11 e crie um novo módulo para sua pasta de trabalho. Nesse módulo adicione:

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

Agora o problema: percorremos todas as colunas e digamos que não encontramos uma soma de 0 até a Coluna 3... então, porque a Coluna 2 está visível, pela sua lógica, não ocultamos a coluna 3. repita até chegar ao final da folha. Essencialmente, a lógica que você descreve fechará as colunas até encontrar uma coluna com soma 0. Se essa coluna com soma 0 for a Coluna 1, então... nada ficará oculto. Se este não for o comportamento desejado, avise-me e posso reescrever para que você chegue lá.

informação relacionada