Ayuda con código para eliminar columnas sin datos en las celdas de microsoft excel

Hola experto
Tengo una pregunta que llevo varios días intentado hacer y no l consigo.
A ver tengo una libro con varias hojas. Una de estas es trimestre uno. En fila tengo puesto transporte1, trasporte 2, transporte 3 ... Así varios (unos 30) y en columna lunes, martes, ..., domingo. El día que se una un transporte se pone la cantidad
bien lo que a mi me interesa es poder eliminar las columnas que no tengan datos, es decir, que si no se una un transporte no salga en la tabla. Lo que yo he hecho para eliminar las columnas es hacer un sumatorio por columnas llamado "total". Si total es cero hago el siguiente lazo:
Sub elimina()
i = 3
While i < 40
If Cells(1, i).Value = 0 Then
Cells(1, i).Columns.Delete
End If
i = i + 1
Wend
End Sub
Hasta aquí bien. Mi problema es que si ahora cambio los datos de la tabla esta no se me actualiza, es decir, si inicialmente no transponte con transporte 1, y después lo quiero cambiar esta columna ya se me ha borrado y no consigo que me vuelva a aparecer. Lo he intentado pasándolo de una hoja a otra copiando pegando corriendo "elimina" y nada,
otra cosa que he probado (que para las gráficas me funciona perfectamente es hacer una macro que me transponga la matriz (es una matriz no valores lo cual lo complica todo) y aplicando un autofiltro "no vacíos" a la calumna "total", lo cual me funciona perfectamente ya que en la tabla que transpongo tengo todavía todas las columnas y al trasponerlo obviamente también, por lo que al aplicar el filtro lo aplico sobre toda la matriz inicial, no se si así seria posible poder hacerlo, pero no lo consigo
ayudame por favor!
Gracias de adelantado

1 Respuesta

Respuesta
1
En primer lugar me gustaría que me enviaras tu correo y un archivo con los datos, si eso es posible. ( Los datos pueden ser simulados)
He hecho un archivo (si me das tu correo lo envío, parece ser que acá no se pueden colgar archivos). Con la información que me comentea.
Hice una macro que duplica la hoja (TRANSPORTE) la renombro com INFORME, ELIMINO las columnas con total 0. y listo.
Si después en la hoja TRANSPORTE cambian las condiciones vuelvo a correr la macro y ya esta.
Es importante que antes de correr la macro borres la hoja llamada informe por que da error. (Para ello cree una macro llamada Borra_Hoja_Informe
ESTA SON LAS MACROS.
Sub Prepara_Informe()
' Macro2 Macro
' Macro grabada el 03/11/2009 por Hector Reyes
    Sheets("TRANSPORTE").Copy Before:=Sheets(2)
    Sheets("TRANSPORTE (2)").Select
    Sheets("TRANSPORTE (2)").Name = "INFORME"
    Range("A23").Select
    Eliminar_Columnas
End Sub
Sub Eliminar_Columnas()
    Sheets("INFORME").Select
    Range("B23").Select
    v_col2 = 30
    For i = 1 To v_col2
        If ActiveCell.Value = 0 Then
            Selection.EntireColumn.Delete
        Else
            ActiveCell.Offset(0, 1).Select
        End If
    Next i
End Sub
Sub Borra_Hoja_Informe()
    Sheets("INFORME").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("TRANSPORTE").Select
    Range("A1").Select
End Sub
Mi correo es [email protected]
¿Soluciona esto tu inquietud?
Entra en todoexpertos y da tu opinión respecto a la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas