Eliminar en Excel columnas que no tengan datos en diferentes hojas

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
Me vas a tener que perdonar, pero realmente no entiendo lo que me quieres decir... No entiendo eso de "... que si no se una un transporte no salga en la tabla", ni tampoco esta otra frase: "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".
-Tampoco comprendo para que quieres volver a hacer aparecer algo que previamente has borrado...
Al margen de todo esto, sobreentiendo que el problema que tienes, es que no se actualizan los datos automáticamente. -Para esto, te diría que compruebes en las opciones de Excel (Herramientas->Opciones->Calcular), que tienes puesto que se calculen automáticamente los datos...
En fin, te rogaría que releas el texto que me has enviado, y que si lo que he sobrentendido no es correcto me lo remitas, intentando explicarte un poquito mejor, poniendo comas y puntos y sin comerte letras...
Tienes razón esta un poco mal explicado. Voy a intentar simplificar un poco lo que estoy haciendo:
A ver yo tengo 2 hojas, "datos" y "resumen". En "datos" en fila tengo transporte 1, transporte 2,..., transporte 40. En columna tengo lunes, martes, ..., domingo. En esta hoja introduzco cantidades (ejemplo transporte 1- martes =50)
Con estos datos mediante unas fórmulas consigo los números que a mi me interesan. Estos números me salen en la hoja "resumen"
En esta hoja, por lo tanto, obtengo una tabla dependiente de la hoja "datos". Como la tabla/matriz que consigo es muy amplia y algunos transportes no han trabajado quiero eliminar estas columnas.
Una vez trabajados estos datos lo que quiero es volver a "datos" y poder cambiar estos números, donde fácilmente los trasportes que no hayan trabajado la primera vez esta vez si que trabajen. Entonces quiero que al cambiar estos datos se me vuelva a actualizar la hoja "resumen" y me oculte los nuevos transportes que no hallan trabajado
espero esta vez haber sido un poco más claro
gracias
Creo que ahora he entendido algo mejor... gracias por tu nueva explicación...
La verdad es que es un poco raro que no te actualice los datos en la hoja de Resumen una vez borrado lo que no deseas, por tanto, te recomiendo que en el programa "Elimina" que has creado, (o donde tu consideres necesario), incluyas este comando para obligar a Excel a recalcular los datos.
Sheets("Resumen").Select       'Selecciona la hoja de Resumen
Calculate ' Y obliga a recalcular los datos.
Si esto no funcionase, el problema viene dado por las fórmulas que utilizas en la hoja de datos, que al borrar casillas, las fórmulas quedan mal ubicadas... Para esto, no hay remedio, ya que si utilizas código para borrar casillas, tienes que utilizarlo también para reubicar las fórmulas. A mano, es más fácil, puesto que simplemente, seleccionas la columna y borras, y todo lo que se desplace a un lado u otro, cambia la fórmula para reubicarlo automáticamente... pero no se puede hacer así con código; Tienes que volver a ubicar las fórmulas para cada celda.
En fin.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas