• Domingo 28 de Abril de 2024, 22:53

Autor Tema:  borrar filas=vacias de un rango  (Leído 6778 veces)

noneim666

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
borrar filas=vacias de un rango
« en: Domingo 21 de Junio de 2009, 18:35 »
0
Soy principiante del todooooooo (hace un dia). Programaba muy bien en Basic hace años....pero esto es algo distinto. No mucho.
Tengo un rango grande de datos que quiero "limpiar" de registros (filas) que contienen un campo (columna) vacío en ciertos casos. El campo puede tener cualquier tipo de contenido (letras, numeros y caracteres remezclados)
trato de hacer un programita para que me ayude y no hay forma:
- Si ya hay un lugar donde lo trate........decirme donde.
- La mamarrachada de programita es este. Cada vez que toco algo para probar, me dice un error distinto. Es la hoja de pruebas, que luego extenderé a la excel de trabajo.

Sub Macro1()
'
' Macro1 Macro
Worksheets("hoja1").Range("D2:D10").Select
For Each cell In Range
dato = Range(ActiveCell).value
If dato = "" Then
Selection.EntireRow.Delete
Next cell
End Sub
-----------------------
o
----------------------
Sub Macro1()
'
' Macro1 Macro
Worksheets("hoja1").Range("D2:D10").Select
For Each cell In Range
If activecell = "" Then
Selection.EntireRow.Delete
Next cell
End Sub
------------------
Me vuelve loco tamaña estupidez. Gracias. Prometo ir aprendiendo a la carrera.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: borrar filas=vacias de un rango
« Respuesta #1 en: Domingo 21 de Junio de 2009, 20:15 »
0
Esto va en VBA y no aquí, que algún moderador lo mueva, por favor. Y además, tienes que usar las etiquetas de código.

Cita de: "noneim666"
Tengo un rango grande de datos que quiero "limpiar" de registros (filas) que contienen un campo (columna) vacío en ciertos casos.
Esto no me queda muy claro... ¿Qué rango es? ¿Hay que limpiarlo cuando está vacía la columna, limpiarlo siempre, o cómo? ¿En qué casos está vacío? En fin, detalla más, no entiendo qué quieres hacer...

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: borrar filas=vacias de un rango
« Respuesta #2 en: Lunes 22 de Junio de 2009, 15:56 »
0
Si quieres comprobar todas las columnas  esta bien el for each pero si solo fuera 1 seria mejor usar un for o un while que recorra solo en sentido vertical

Código: Visual Basic
  1. Sub Borrar(Rango As String)
  2.     Dim strReporte As String
  3.        
  4.     Range(Rango).Select
  5.     For Each Cell In Selection
  6.        If Cell.Value = Empty Then
  7.           strReporte = strReporte & Replace(Cell.Address, "$", "") & vbCrLf
  8.           'Cell.EntireRow.Delete
  9.        End If
  10.     Next Cell
  11.    
  12.     If strReporte = Empty Then
  13.         strReporte = "-Ninguna-"
  14.     End If
  15.    
  16.     MsgBox "Las Siguientes Celdas estan Vacias :" & vbCrLf & vbCrLf & strReporte, vbInformation, "Resultado"
  17. End Sub
  18.  

Código: Visual Basic
  1. Call Borrar("A1:J19")
  2.  

Hay que activar la hoja en que se desee trabajar, recuerda que cade vez que elimines una fila, logicamente el rango disminuye


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

noneim666

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: borrar filas=vacias de un rango
« Respuesta #3 en: Miércoles 24 de Junio de 2009, 19:58 »
0
gracias. Miraré a ver como lo planteais y si hago que funcione.

Pues el rango es grande (30 columnas-campos y muchas filas-registros, pero solo selecciono el campo "factura" como de trabajo: si esta no existe....fila a la basura), y lo que pretendo es eliminar todas las filas que en una columna presentan "codigo de factura" = vacío. De esta forma, sin aplicar un filtro al efecto, elimino muchas filas que, aunque tengan datos en otros campos, no me interesa mantener para otro tipo de cálculos. la tabla me queda mucho mas limpia...............y me permite hacer cosas sin tener que gestionar un 30% de filas de pedidos que aun no han sido facturados.

Pues son unos 50.000 filas, de las cuales entre el 30 y el 50% corresponden a pedidos que aun no han sido servidos y que, por tanto, aun no han sido facturados. HAY QUE LIMPIAR ESA TABLA COMO SEA.

Es decir, cuando le ponemos, un for each cell of range...si eliminamos filas, ese rango (claro) cambia de tamaño y se vualve loco el bucle?. No habia caido, pero parece lógico....veré.

muchas gracias