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á.