Eliminar Filas VBA

14/08/2004 - 20:54 por Javier R | Informe spam
actualmente tengo el siguient ecodigo y lo quiero
complementar chequen:
Sub EliminarRepetidos()
contador = 0
Range("b1").Select
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
'aqui quiero seleccionar toda la fila o cuando menos que
elimine las filas de dos columnas
'actualmente me esta posicionando en una celda y solo
elimina esa celda con el siguiente select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & "
elementos repetidos", 1, "Número de repetidos")
End Sub
espero sus respuestas amigos.
Saludos

Preguntas similare

Leer las respuestas

#1 Juan Carlos Pérez
15/08/2004 - 01:08 | Informe spam
Para chequear un rango de celdas y eliminar filas que contengan un
determinado valor, yo lo haría de la siguiente forma

Sub Eliminar_Repetidos()
Dim Valor, f as long, contador as long, Respuesta
Valor = range("B1")
Contador = 0
For f = 1 to 100 'Aquí el rango de filas que quieras chequear, en este caso
de la 1 a la 100
if cells(f,1) = Valor then
rows(f).delete
contador = contador + 1
end if
Next f
Respuesta = MsgBox("Se han encontrado " & contador & " elementos
repetidos", 1, "Número de repetidos")

End Sub

No obstante, si tu código te funciona correctamente, a excepción de la
elilminación de la fila, puedes utilizar las instrucción:
Rows(activecell.row).delete en lugar de usar Selection.Delete
Shift:=xlUp

Esperando haberte sido de ayuda, te saluda cordialmente

Juan Carlos Perez
Asturias-España


"Javier R" escribió en el mensaje
news:649901c48230$29eff7d0$
actualmente tengo el siguient ecodigo y lo quiero
complementar chequen:
Sub EliminarRepetidos()
contador = 0
Range("b1").Select
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
'aqui quiero seleccionar toda la fila o cuando menos que
elimine las filas de dos columnas
'actualmente me esta posicionando en una celda y solo
elimina esa celda con el siguiente select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & "
elementos repetidos", 1, "Número de repetidos")
End Sub
espero sus respuestas amigos.
Saludos
Respuesta Responder a este mensaje
#2 Daniel.M
15/08/2004 - 03:38 | Informe spam
Hola Juan Carlo,

Cuando eliminamos celdas, es mejor de hacer una iteracion 'inversa'

Sub Eliminar_Repetidos2()
Dim Valor, f As Long, contador As Long
Valor = Range("B1")
contador = 0
For f = 100 To 1 Step -1 ' <= CAMBIO
'Aquí el rango de filas que quieras chequear, en este caso de la 1 a la 100
If Cells(f, 1) = Valor Then
Rows(f).Delete
contador = contador + 1
End If
Next f
MsgBox "Se han encontrado " & contador & " elementos repetidos", _
vbInformation + vbOKOnly, "Número de repetidos"

End Sub


Porque si hay dos valores consecutivos igual a B1, tiene que eliminar los dos.

Saludos,

Daniel M.

"Juan Carlos Pérez" <perez-m-jcarrobaterra.es> wrote in message
news:
Para chequear un rango de celdas y eliminar filas que contengan un
determinado valor, yo lo haría de la siguiente forma

Sub Eliminar_Repetidos()
Dim Valor, f as long, contador as long, Respuesta
Valor = range("B1")
Contador = 0
For f = 1 to 100 'Aquí el rango de filas que quieras chequear, en este caso
de la 1 a la 100
if cells(f,1) = Valor then
rows(f).delete
contador = contador + 1
end if
Next f
Respuesta = MsgBox("Se han encontrado " & contador & " elementos
repetidos", 1, "Número de repetidos")

End Sub

No obstante, si tu código te funciona correctamente, a excepción de la
elilminación de la fila, puedes utilizar las instrucción:
Rows(activecell.row).delete en lugar de usar Selection.Delete
Shift:=xlUp

Esperando haberte sido de ayuda, te saluda cordialmente

Juan Carlos Perez
Asturias-España


"Javier R" escribió en el mensaje
news:649901c48230$29eff7d0$
actualmente tengo el siguient ecodigo y lo quiero
complementar chequen:
Sub EliminarRepetidos()
contador = 0
Range("b1").Select
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
'aqui quiero seleccionar toda la fila o cuando menos que
elimine las filas de dos columnas
'actualmente me esta posicionando en una celda y solo
elimina esa celda con el siguiente select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & "
elementos repetidos", 1, "Número de repetidos")
End Sub
espero sus respuestas amigos.
Saludos


Respuesta Responder a este mensaje
#3 Juan Carlos Pérez
16/08/2004 - 01:19 | Informe spam
Hola Daniel !
Efectivamente, tienes razón. Es una buena solución la iteración inversa. En
la macro se me había olvidado una instrucción dentro del If, a continuación
del delete, restandole 1 a la variable de fila, y así se evita el problema
de NO eliminar dos valores iguales consecutivos, que es como lo hago
habitualmente en mis macros. No obstante, es mas sencilla tu propuesta, que
comenzaré a aplicar a partir de ahora. Siempre se está aprendiendo algo.

Saludos

Juan Carlos Pérez
Asturias - España

"Daniel.M" escribió en el mensaje
news:
Hola Juan Carlo,

Cuando eliminamos celdas, es mejor de hacer una iteracion 'inversa'

Sub Eliminar_Repetidos2()
Dim Valor, f As Long, contador As Long
Valor = Range("B1")
contador = 0
For f = 100 To 1 Step -1 ' <= CAMBIO
'Aquí el rango de filas que quieras chequear, en este caso de la 1 a la


100
If Cells(f, 1) = Valor Then
Rows(f).Delete
contador = contador + 1
End If
Next f
MsgBox "Se han encontrado " & contador & " elementos repetidos", _
vbInformation + vbOKOnly, "Número de repetidos"

End Sub


Porque si hay dos valores consecutivos igual a B1, tiene que eliminar los


dos.

Saludos,

Daniel M.

"Juan Carlos Pérez" <perez-m-jcarrobaterra.es> wrote in message
news:
> Para chequear un rango de celdas y eliminar filas que contengan un
> determinado valor, yo lo haría de la siguiente forma
>
> Sub Eliminar_Repetidos()
> Dim Valor, f as long, contador as long, Respuesta
> Valor = range("B1")
> Contador = 0
> For f = 1 to 100 'Aquí el rango de filas que quieras chequear, en este


caso
> de la 1 a la 100
> if cells(f,1) = Valor then
> rows(f).delete
> contador = contador + 1
> end if
> Next f
> Respuesta = MsgBox("Se han encontrado " & contador & " elementos
> repetidos", 1, "Número de repetidos")
>
> End Sub
>
> No obstante, si tu código te funciona correctamente, a excepción de la
> elilminación de la fila, puedes utilizar las instrucción:
> Rows(activecell.row).delete en lugar de usar Selection.Delete
> Shift:=xlUp
>
> Esperando haberte sido de ayuda, te saluda cordialmente
>
> Juan Carlos Perez
> Asturias-España
>
>
> "Javier R" escribió en el mensaje
> news:649901c48230$29eff7d0$
> actualmente tengo el siguient ecodigo y lo quiero
> complementar chequen:
> Sub EliminarRepetidos()
> contador = 0
> Range("b1").Select
> valor = ActiveCell.Value
> ActiveCell.Offset(1, 0).Range("a1").Select
> While ActiveCell.Value <> ""
> If ActiveCell.Value = valor Then
> 'aqui quiero seleccionar toda la fila o cuando menos que
> elimine las filas de dos columnas
> 'actualmente me esta posicionando en una celda y solo
> elimina esa celda con el siguiente select
> Selection.Delete Shift:=xlUp
> contador = contador + 1
> Else
> valor = ActiveCell.Value
> ActiveCell.Offset(1, 0).Range("a1").Select
> End If
> Wend
> Respuesta = MsgBox("Se han encontrado " & contador & "
> elementos repetidos", 1, "Número de repetidos")
> End Sub
> espero sus respuestas amigos.
> Saludos
>
>


Respuesta Responder a este mensaje
#4 Javier R
16/08/2004 - 16:38 | Informe spam
Les agradezco mucho su Valiosa ayuda , seguimos en
contacto en el foro...
Saludos
desde Mexico
actualmente tengo el siguient ecodigo y lo quiero
complementar chequen:
Sub EliminarRepetidos()
contador = 0
Range("b1").Select
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
'aqui quiero seleccionar toda la fila o cuando menos que
elimine las filas de dos columnas
'actualmente me esta posicionando en una celda y solo
elimina esa celda con el siguiente select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & "
elementos repetidos", 1, "Número de repetidos")
End Sub
espero sus respuestas amigos.
Saludos
.

Respuesta Responder a este mensaje
#5 Anonimo
16/08/2004 - 17:27 | Informe spam
el objetivo revisando nuevamente al situarme el la celda
inicial b1 es para qeu apartir de ahi inicie el proceso de
por ejemplo
Columna
A B

Ciudad Ruta
Mexico 1
Mexico 1
Mexico 2
MExico 2
Mexico 2
Sinaloa 1
Sonora 3
Sonora 4


Resultado actual con la macro:
Ciudad Ruta
Mexico 1
Mexico 2
Mexico 1
MExico 3
Mexico 4
Sinaloa
Sonora
Sonora

Objetivo que busco:
Ciudad Ruta
Mexico 1
Mexico 2
Sinaloa 1
Sonora 3
Sonora 4

Lo siento por no haber sido tan explicito al principio
pero haber si me pueden ayudar a complementar el codigo
ya que yo soy aprendiz en esto de las macros...
Muchas gracias amigos






Les agradezco mucho su Valiosa ayuda , seguimos en
contacto en el foro...
Saludos
desde Mexico
actualmente tengo el siguient ecodigo y lo quiero
complementar chequen:
Sub EliminarRepetidos()
contador = 0
Range("b1").Select
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
While ActiveCell.Value <> ""
If ActiveCell.Value = valor Then
'aqui quiero seleccionar toda la fila o cuando menos que
elimine las filas de dos columnas
'actualmente me esta posicionando en una celda y solo
elimina esa celda con el siguiente select
Selection.Delete Shift:=xlUp
contador = contador + 1
Else
valor = ActiveCell.Value
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Wend
Respuesta = MsgBox("Se han encontrado " & contador & "
elementos repetidos", 1, "Número de repetidos")
End Sub
espero sus respuestas amigos.
Saludos
.



.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida