Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Ofimática (http://www.forosdelweb.com/f90/)
-   -   Problemas con celdas vacias (http://www.forosdelweb.com/f90/problemas-con-celdas-vacias-628545/)

polig 26/09/2008 03:58

Problemas con celdas vacias
 
Hola tod@s!

Tengo una Macro que a partir de una hoja de calculo base, con miles de datos, me filtra de acuerdo a ciertos parametros y me copia en otra hoja como valores las celdas resultantes. Esto es, que de un archivo inicial de alrededor 11,000 filas, genero uno nuevo, con la info relevante para cada caso, con unas 200 filas (El nro de filas resultantes nunca es fijo...). El problema es que esta nueva hoja de 200 filas queda pesando 28,0 MB!!!! 10 veces mas que el archivo original. Lo que procedo a hacer es borrar las filas en blanco manualmente, es decir, selecciono desde la fila 201 hasta el final y suprimo..Listo!! el archivo pesa ahora 300KB.
Realmente no entiendo cual es la informacion que el archivo me copia en las celdas en blanco.. y no he logrado encontrar alguna manera de incluir en la macro una operacion que me seleccione estas filas despues de la ultima con valores y me las suprima.
Alguien de uds tiene casos similares o sugerencias?? Les agradeceria...

Saludos

David 26/09/2008 08:06

Respuesta: Problemas con celdas vacias
 
¿Podríamos ver la función que hace el paso entre las dos hojas?. Así será más fácil ayudarte.

polig 29/09/2008 03:08

Respuesta: Problemas con celdas vacias
 
Hola,
Mi macro esta escrita de la siguiente manera:
Como puedes ver es simplemente copiar datos y pegarlos en una nueva hoja, para darles un formato especial.
Espero puedan ayudarme, gracias!!

Cells.Select
Selection.Copy
Workbooks.Add
Range("A1").Select
ActiveSheet.Paste
Range("A7").Select
Range("J1:J4").Select
Selection.ClearComments
Columns("O:O").EntireColumn.AutoFit
ActiveWindow.SmallScroll Down:=189
Rows("700:700").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A8").Select
Range("A8:M8").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$O8=""kritisch"""
Selection.FormatConditions(1).Interior.ColorIndex = 44
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$O8=""verschoben"""
Selection.FormatConditions(2).Interior.ColorIndex = 37
Selection.Copy
Range("A9:M9").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A8").Select

mrocf 29/09/2008 14:09

Respuesta: Problemas con celdas vacias
 
Hola! polig.
Veo un par de contrasentidos que -quizás- expliquen tus problemas:

Por un lado dices que tras el filtrado copias "como valores" las celdas resultantes...
Sin embargo, las siguientes líneas:

Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste


no están "pegando valores" sino todo el contenido completo de las celdas en cuestión, incluyendo las fórmulas que contengan.

Luego, surgen dos comentarios iniciales:

a) ¿Por qué Cells.Copy (o sea: toda la hoja completa) y no sólo el rango producto del filtrado?
b) ¿Por qué ActiveSheet.Paste y no Selection.PasteSpecial Paste:=xlPasteValues?

Comienza por ver esas cuestiones y luego nos cuentas.
Saludos, Cacho. :si:

polig 01/10/2008 00:56

Respuesta: Problemas con celdas vacias
 
Hola Cacho! Muchas gracia spor tu sugerencia.
Estuve revisando nuevamente el proceso, pero no logro que la macro me copie unicamente las celdas con datos. En la macro inicial copio toda la hoja parapegarla tal cual; asi aseguro que todos los datos, independientemente del numero de filas, queden copiados. Ahora intente con la siguiente macro:

Range("A1:V1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Workbooks.Add
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A5").Select
End Sub

Cuando lo hago manualmente, la doble Selection.End down copia exactamente lo que necesito, pero al ejecutar esa marcro solo logro copiar los encabezados; las celdas filtradas no quedan! Por esta razon fue que decidi escribir la macro con copiar toda la hoja, con el problema resultante del tamanno del archivo.
Como hacer entonces para que una marcro me copie solo las celdas que tienen datos sin tener que copiar toda la hoja? El numero de filas con datos es siempre diferente... lo unico constante son los encabezados, que van de la fila 1 a la 7.

mrocf 01/10/2008 02:28

Respuesta: Problemas con celdas vacias
 
Evalúa lo siguiente:

En toda base de datos hay campos (columnas del Excel) que pueden tener información o estar en blanco.
Pero hay columnas que -sin ningún lugar a dudas- SIEMPRE tienen información. Entonces: ¿Cuál de tus columnas SIEMPRE tiene información?

Supongamos que tal columna es la "B".

Lo que debes hacer es -antes del proceso de filtrado- localizar tu última fila con datos del siguiente modo:

UltimaFila = [B65536].End(xlUp).Row


Y luego del proceso de filtrado, en lugar de:
Cells.Select
Selection.Copy


puedes incorporar:
Range("A1", "V" & UltimaFila).Copy

siguiendo con:
Workbooks.Add
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A5").Select
End Sub



Prueba con eso y luego nos cuentas.

Saludos, Cacho.
:si:

polig 07/10/2008 08:00

Respuesta: Problemas con celdas vacias
 
Super! no me sabia la de encontrar la ultima fila... esa fue la que me arreglo el problema.
Gracias!


La zona horaria es GMT -6. Ahora son las 05:40.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.