Estoy intentando ocultar columnas según la suma de las filas seleccionadas (es decir, celdas) en esas columnas.
Por ejemplo, si la suma de E9:E12 es 0, oculte la columna E.
Además, y probablemente un poco más difícil: si una columna no se va a ocultar, asegúrese de que la siguiente columna no se oculte, incluso si la suma de sus filas correspondientes es cero.
Por ejemplo, si la suma de E9:E12 no es 0, entonces no oculte E ni la columna F, incluso si la suma de F9:F12 es cero.
Respuesta1
Obviamente, esto requerirá algo de VBA para lograrlo. Veo un problema potencial con su lógica, pero VBA hará exactamente lo que usted solicitó. Hablaré del problema al final.
Abra su VBE con Ctrl+F11 y cree un nuevo módulo para su libro de trabajo. En ese módulo agregue:
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
Ahora el problema: recorremos cada columna y digamos que no encontramos una suma de 0 hasta la columna 3... entonces, como la columna 2 es visible, según su lógica, no ocultamos la columna 3... repita hasta llegar al final de la hoja. Básicamente, la lógica que usted describe cerrará las columnas hasta que encuentre una columna con una suma de 0. Si esa columna con una suma de 0 es la Columna 1, entonces... nada se oculta. Si este no es el comportamiento que desea, hágamelo saber y podré reescribirlo para llevarlo allí.