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

0

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, então, 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 se esconda, mesmo que a soma de suas linhas correspondentes seja zero.

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

    
por Ian 02.07.2014 / 16:32

1 resposta

0

Isso, obviamente, levará alguns VBA para serem executados. Eu vejo um problema em potencial com sua lógica, mas o VBA fará exatamente como você solicitou. Eu vou falar 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 é visível, então, pela sua lógica, não ocultamos a coluna 3 .. repita até chegar ao final da folha. Essencialmente, a lógica contornada fechará as colunas até encontrar uma coluna com uma soma de 0. Se essa coluna com uma soma de 0 for Coluna 1, então ... nada ficará oculto. Se este não é o seu comportamento desejado, então me avise e eu posso reescrever para chegar até você.

    
por 02.07.2014 / 17:29