![]() |
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 |
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. |
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 |
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: |
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. |
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: |
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.