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