Это, очевидно, потребует некоторого VBA, чтобы осуществить. Я вижу потенциальную проблему с вашей логикой, но VBA будет делать именно так, как вы просили. Я расскажу о проблеме в конце.
Откройте VBE с помощью Ctrl+F11 и создайте новый модуль для вашей рабочей книги. В этот модуль добавить:
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
Теперь проблема: мы перебираем все столбцы и говорим, что не встречаем сумму 0 до столбца 3 ... тогда, поскольку столбец 2 видим, то, по вашей логике, мы не скрываем столбец 3 .. повторяйте, пока не дойдете до конца листа. По сути, логика, которую вы обрисовали, закроет столбцы, пока не встретит столбец с суммой 0. Если этот столбец с суммой 0 равен столбцу 1, то ... ничего не скрывается. Если это не ваше желаемое поведение, то дайте мне знать, и я могу переписать, чтобы вы там оказались.