Eliminar celdas vacías.

13/05/2005 - 12:58 por Respuesta X \(menguillo bcn\) | Informe spam
HOla chicos!!

Estoy desesperado por ver si alguien me puede dar una salución al siguiente
problema

Tengo distribuidos en un total de 18 .xls's con muchas pestañas cada uno
rangos de datos en dos columas.
Entre todos los documentos tengo mas de 14.000 registros en filas.

Algunas de las celdas, tanto en la 1ª como en la 2ª columna están vacías y
necesito de una manera automática eliminar esas celdas vacias desplazando
las siguientes hacia arriba.

Una súplica: quien me ayuda????!!!!

Gracias!


xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA

Preguntas similare

Leer las respuestas

#1 Respuesta X \(menguillo bcn\)
13/05/2005 - 13:22 | Informe spam
Tpc (tampoco) me sirve esta:

Hola atodos espero q hayan tenido unas felices fiestas mi pregunta es la
sgte. este macro me ayudaron aca en el foro pero lo q deseo es q se
oculten las celdas q estan en blanco ( sin ningun valor) me pueden ayudar


gracias
de antemano

Sub EsconderFilas()
ActiveSheet.Unprotect "miclave" 'Desprotege
Application.ScreenUpdating = False
Dim Rango As Range, c As Range

Set Rango = Range("C8:C42")
For Each a In Rango
If a = 0 And a <> vbNullString Then
a.EntireRow.Hidden = True
Else
a.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
ActiveSheet.Protect Password:="miclave" ' Vuelve a proteger
End Sub





xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA
"Respuesta X (menguillo bcn)" escribió en el mensaje
news:#
HOla chicos!!

Estoy desesperado por ver si alguien me puede dar una salución al


siguiente
problema

Tengo distribuidos en un total de 18 .xls's con muchas pestañas cada uno
rangos de datos en dos columas.
Entre todos los documentos tengo mas de 14.000 registros en filas.

Algunas de las celdas, tanto en la 1ª como en la 2ª columna están vacías y
necesito de una manera automática eliminar esas celdas vacias desplazando
las siguientes hacia arriba.

Una súplica: quien me ayuda????!!!!

Gracias!


xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA


Respuesta Responder a este mensaje
#2 Respuesta X \(menguillo bcn\)
13/05/2005 - 13:34 | Informe spam
He encontrado las siguientes soluciones, pero no son las que necesito:

'-Inicio Macro1-
'Esconde las filas si la celda en la columna C esta vacia.
Sub EsconderFilas()
ActiveSheet.Unprotect "miclave" 'Desprotege
Application.ScreenUpdating = False
Dim Rango As Range, c As Range

Set Rango = ActiveSheet.Range("C8:C42")
For Each c In Rango
If IsEmpty(c) Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next
ActiveSheet.Protect "miclave" ' Vuelve a proteger
End Sub

'-Fin Macro1-

'-Inicio Macro2-
'Esconde las filas si todas las celdas de la fila estan vacias.
Sub EsconderFilas1()
ActiveSheet.Unprotect "miclave" 'Desprotege
Application.ScreenUpdating = False
Dim Rango As Range, c As Range

Set Rango = ActiveSheet.Range("C8:C42")
For Each c In Rango
Select Case Application.CountA(c.EntireRow)
Case 0: c.EntireRow.Hidden = True
Case Else: c.EntireRow.Hidden = False
End Select
Next

ActiveSheet.Protect "miclave" ' Vuelve a proteger
End Sub
'-Fin Macro2-

y por último

Hola Luis, 1) Respecto a las filas en blanco: Algunas formas de hacerlo: a.
Manual- Selecciona todos los datos en la primera columna (Supongo q las
filas condatos no pueden tener la primera celda en blanco. Si no es asi,
busca lacolumna q responda a esta condicion).- Ve al menu Edicion>Ir a...-
Pulsa el boton Especial- Marca la cuarta opcion desde abajo a mano izquierda
(creo q dice blancoso vacios) y pulsa OK- Ve al menu Edicion>Eliminar...,
selecciona Fila Entera y pulsa Aceptar. Este metodo es super rapido, pero
tiene una limitacion importante y es que no funcionara si el rango de la
tabla tiene mas de 8000 filas en blanco NO ADYACENTES (si son adyacentes o
las no adyacentos son menos de ~8000 - no pasa nada): b. Macro- Abre el
fichero y activa la hoja con el rango a limpiar.- Haz clic derecho sobre el
nombre de la hoja q aparece en una de laspestanas en la parte inferior
izquierda de la ventana de Excel.- Del menu contextual q aparecera a
continuacion selecciona "Ver codigo" yseabrira el Editor VBA.- En la ventana
mas grande a la derecha copia el siguiente codigo: '--Inicio
CodigoSub BorrarFilasVacias() uFila = ActiveSheet.Cells(65536,
1).End(xlUp).Row Application.ScreenUpdating = False For Fila = uFila
To 2 Step -1 If Application.CountA(Rows(Fila)) = 0 Then
Rows(Fila).Delete Next FilaEnd Sub'--Fin Codigo o bien puedes
especificar el rango en el cual eliminar las filas vacias
expresamente,p.ej.: '--Inicio CodigoSub BorrarFilasVacias() With
ActiveSheet.Range("A1:D20000") pFila=.Row uFila pFila+.Rows.Count-1 End With Application.ScreenUpdating = False For
Fila = uFila To pFila Step -1 If Application.CountA(Rows(Fila)) = 0
Then Rows(Fila).Delete Next FilaEnd Sub'--Fin Codigo o bien, si
se peuede decir que todas las filas que tienen celdas vacias en una columna
determinada (digamos la [A]) estan completamente vacias podrias usar el
siguiente codigo. Este codigo es super rapido, pero tiene una limitacion
importante y es que no funcionara si el rango de la tabla tiene mas de 8000
filas en blanco NO ADYACENTES (si son adyacentes o las no adyacentos son
menos de ~8000 - no pasa nada): '--Inicio CodigoSub
BorrarFilasVacias() Dim Rng As Range, Vacios As Range Set Rng ActiveSheet.Range("A1:A20000") On Error Resume Next Set Vacios Rng.SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Vacios Is
Nothing Then MsgBox "No se han encontrado filas vacias" Else
If Vacios.Address <> Rng.Address Then Vacios.EntireRow.Delete
Else MsgBox "El rango " & Vacios.Address & _ "
parece tener mas " & Chr(13) & _ "de 8000 celdas vacias no
adyacentes." End If End IfEnd Sub'--Fin Codigo - Pulsa
Alt+F11 para volver a la hoja.- Pulsa Alt+F8 y haz doble clic sobre
"BorrarFilasVacias" 2) Respecto a esta frase: > ...La finalidad de todo esto
seria eliminar las filas en blanco y en las> filas donde pone un numero
seguido de Almacen - capital eliminar por > completo> esa fila. Me temo que
sigo sin entenderla. Necesito que la reformules para poder entender que es
lo que quiere hacer con las filas que continen la cadena de texto "Almacen -
capital" Saludos,KL




xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA
"Respuesta X (menguillo bcn)" escribió en el mensaje
news:#
HOla chicos!!

Estoy desesperado por ver si alguien me puede dar una salución al


siguiente
problema

Tengo distribuidos en un total de 18 .xls's con muchas pestañas cada uno
rangos de datos en dos columas.
Entre todos los documentos tengo mas de 14.000 registros en filas.

Algunas de las celdas, tanto en la 1ª como en la 2ª columna están vacías y
necesito de una manera automática eliminar esas celdas vacias desplazando
las siguientes hacia arriba.

Una súplica: quien me ayuda????!!!!

Gracias!


xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA


Respuesta Responder a este mensaje
#3 KL
13/05/2005 - 14:38 | Informe spam
Hola menguillo,

Algunas formas de hacerlo:

1). Manual
- Selecciona todos los datos en la columna [A]
- Ve al menu Edicion>Ir a...
- Pulsa el boton Especial
- Marca la cuarta opcion desde abajo a mano izquierda (creo q dice blancos
o vacios) y pulsa OK
- Ve al menu Edicion>Eliminar..., selecciona Fila Entera y pulsa Aceptar.
- Repite los pasos anteriores para la columna [B]

Este metodo es super rapido, pero tiene una limitacion importante y es que
no funcionara si el rango de la tabla tiene mas de 8000 filas en blanco NO
ADYACENTES (si son adyacentes o las no adyacentos son menos de ~8000 - no
pasa nada):

2) Macro (Ojo - los macros que te pongo a continuacion eliminan las filas
del rango usado de la hoja, que tengan celdas vacias en las columnas [A] o
[B] en todas las hojas de todos los libros abiertos)
- Abre los 18 ficheros (empieza con copias por si acaso)
- Haz clic derecho sobre el nombre de la hoja activa de cualquiera de los
libros (el nombre aparece en una de las
pestanas en la parte inferior izquierda de la ventana de Excel).
- Del menu contextual q aparecera a continuacion selecciona "Ver codigo" y
se abrira el Editor VBA.
- En la ventana mas grande a la derecha copia el siguiente codigo:

'--Inicio Codigo
Sub BorrarFilasVacias()
Application.ScreenUpdating = False
For Each Libro In Application.Workbooks
For Each hoja In Libro.Worksheets
With hoja.UsedRange
uFila = .Cells(.Rows.Count, 1).Row
End With
For i = uFila To 2 Step -1
If hoja.Cells(i, "A") = "" _
Or hoja.Cells(i, "B") = "" Then _
Rows(i).Delete
Next i
Next hoja
Next Libro
Application.ScreenUpdating = True
End Sub
'--Fin Codigo

o bien, este. Este codigo es super rapido, pero tiene una
limitacion importante y es que no funcionara si el rango de la tabla tiene
mas de 8000 filas en blanco NO ADYACENTES (si son adyacentes o las no
adyacentos son menos de ~8000 - no pasa nada):

'--Inicio Codigo
Sub BorrarFilasVacias()
Dim Rng As Range, Vacios As Range
Application.ScreenUpdating = False
For Each Libro In Application.Workbooks
For Each hoja In Libro.Worksheets
With hoja.UsedRange
uFila = .Cells(.Rows.Count, 1).Row
End With
On Error Resume Next
Set Rng = hoja.Range(Cells(2, "A"), Cells(uFila, "B"))
Set Vacios = Rng.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Vacios Is Nothing Then
If Vacios.Address <> Rng.Address Then
Vacios.EntireRow.Delete
Set Vacios = Nothing
Else
MsgBox "El rango " & Vacios.Address & _
" parece tener mas " & Chr(13) & _
"de 8000 celdas vacias no adyacentes."
End If
End If
Next hoja
Next Libro
Application.ScreenUpdating = True
End Sub
'--Fin Codigo

- Pulsa Alt+F11 para volver a la hoja.
- Pulsa Alt+F8 y haz doble clic sobre "BorrarFilasVacias"

Saludos,
KL
Respuesta Responder a este mensaje
#4 Respuesta X \(menguillo bcn\)
13/05/2005 - 17:55 | Informe spam
Gracias KL por tu respuesta.
La primersisima fue muy útil aunque con 18 documentos a unas 10 fichas por
documento me resultó algo tedioso.
Hubiera estamos mas tiempo inventando código, pq yo de VBA en Excel, nada de
nada.

;-)

xD [Gracias Por Vuestra Participación] xD
Preguntas, ¿te responden?
Preguntan, ¿respondes?

2 preguntas, 1 respuesta:
PARTICIPA
"KL" escribió en el mensaje
news:
Hola menguillo,

Algunas formas de hacerlo:

1). Manual
- Selecciona todos los datos en la columna [A]
- Ve al menu Edicion>Ir a...
- Pulsa el boton Especial
- Marca la cuarta opcion desde abajo a mano izquierda (creo q dice blancos
o vacios) y pulsa OK
- Ve al menu Edicion>Eliminar..., selecciona Fila Entera y pulsa Aceptar.
- Repite los pasos anteriores para la columna [B]

Este metodo es super rapido, pero tiene una limitacion importante y es que
no funcionara si el rango de la tabla tiene mas de 8000 filas en blanco NO
ADYACENTES (si son adyacentes o las no adyacentos son menos de ~8000 - no
pasa nada):

2) Macro (Ojo - los macros que te pongo a continuacion eliminan las filas
del rango usado de la hoja, que tengan celdas vacias en las columnas [A] o
[B] en todas las hojas de todos los libros abiertos)
- Abre los 18 ficheros (empieza con copias por si acaso)
- Haz clic derecho sobre el nombre de la hoja activa de cualquiera de los
libros (el nombre aparece en una de las
pestanas en la parte inferior izquierda de la ventana de Excel).
- Del menu contextual q aparecera a continuacion selecciona "Ver codigo" y
se abrira el Editor VBA.
- En la ventana mas grande a la derecha copia el siguiente codigo:

'--Inicio Codigo
Sub BorrarFilasVacias()
Application.ScreenUpdating = False
For Each Libro In Application.Workbooks
For Each hoja In Libro.Worksheets
With hoja.UsedRange
uFila = .Cells(.Rows.Count, 1).Row
End With
For i = uFila To 2 Step -1
If hoja.Cells(i, "A") = "" _
Or hoja.Cells(i, "B") = "" Then _
Rows(i).Delete
Next i
Next hoja
Next Libro
Application.ScreenUpdating = True
End Sub
'--Fin Codigo

o bien, este. Este codigo es super rapido, pero tiene una
limitacion importante y es que no funcionara si el rango de la tabla tiene
mas de 8000 filas en blanco NO ADYACENTES (si son adyacentes o las no
adyacentos son menos de ~8000 - no pasa nada):

'--Inicio Codigo
Sub BorrarFilasVacias()
Dim Rng As Range, Vacios As Range
Application.ScreenUpdating = False
For Each Libro In Application.Workbooks
For Each hoja In Libro.Worksheets
With hoja.UsedRange
uFila = .Cells(.Rows.Count, 1).Row
End With
On Error Resume Next
Set Rng = hoja.Range(Cells(2, "A"), Cells(uFila, "B"))
Set Vacios = Rng.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Vacios Is Nothing Then
If Vacios.Address <> Rng.Address Then
Vacios.EntireRow.Delete
Set Vacios = Nothing
Else
MsgBox "El rango " & Vacios.Address & _
" parece tener mas " & Chr(13) & _
"de 8000 celdas vacias no adyacentes."
End If
End If
Next hoja
Next Libro
Application.ScreenUpdating = True
End Sub
'--Fin Codigo

- Pulsa Alt+F11 para volver a la hoja.
- Pulsa Alt+F8 y haz doble clic sobre "BorrarFilasVacias"

Saludos,
KL


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida