Visual Basic para Aplicaciones - Orientacion para borrar Informacion de un grupo de columnas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 22
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Orientacion para borrar Informacion de un grupo de columnas

Publicado por Javier (28 intervenciones) el 22/05/2018 05:24:20
Buenos Noches desde Mexico.

La pregunta va orientada para buscar el mejor método para borrar información, explico.

Tengo una Hoja1 con 20 columnas aproximadamente y 8000 filas aproximadamente y en otra Hoja2 tengo una celda con valore del criterio

En la Hoja2 tengo A1 ........criterio

Quiero borrar las Filas de la Hoja1 que contengan el la fila "A" el valor de Hoja2 celda "A1"

Esto lo hice así :

1
2
3
4
5
6
7
n=1
do while Sheets("Hoja1").Range( "A" & n ) <> ""
     if Sheets("Hoja1").Range( "A" & n ).value = Sheets("Hoja2").Range( "A1" ).value
            Aqui borro la Fila
     End If
     n=n+1
Loop

Creo que esto no es lo optimo pues recorro toda la columna, al menos es lo que pienso.

Algun@ de ustedes tiene una mejor forma de hacer esto ?

Gracias por sus observaciones o Soluciones.

Saludos
JAG
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.100
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Orientacion para borrar Informacion de un grupo de columnas

Publicado por Antoni Masana (374 intervenciones) el 22/05/2018 07:53:50
La mejor forma cuando borras es empezar por abajo.

1
2
3
4
5
For A=8000 To 1 Step -1
     if Sheets("Hoja1").Range( "A" & n ).value = Sheets("Hoja2").Range( "A1" ).value
            Aqui borro la Fila
     End If
Next

Si empiezas por arriba cuando borras una fila tienes que volver a analizar la misma fila porque si hay dos filas seguidas que borrar te saltarías la segunda:

Otra forma de hacerlo
1
2
3
4
5
6
7
8
n=1
do while Sheets("Hoja1").Range( "A" & n ) <> ""
    if Sheets("Hoja1").Range( "A" & n ).value = Sheets("Hoja2").Range( "A1" ).value
        ' --- Aqui borro la Fila
    Else
        n=n+1
    End If
Loop

Cualquiera de los dos códigos es válido, sólo que en el primero se predefine el número de líneas, el segundo funciona independiente de la cantidad de líneas iniciales.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Orientacion para borrar Informacion de un grupo de columnas

Publicado por Javier Gonzalez (28 intervenciones) el 22/05/2018 14:20:57
Gracias por la respuesta.
Es la única lógica para borrar filas con algún criterio, recorrer la hoja de arriba a bajo o de abajo a arriba.
No existe alguna forma como select de base de datos para borrar o algún truco así ?

Gracias y saludos.
JAG
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 143
Bronce
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Orientacion para borrar Informacion de un grupo de columnas

Publicado por gilman (46 intervenciones) el 22/05/2018 16:02:09
prueba el siguiente codigo y nos cuentas:
1
2
3
4
5
6
7
8
9
Dim R As Range
Dim Col As Range
 
Set Col = Hoja1.Columns(1)
 
Do
    Set R = Col.Find (Hoja2.Cells(1, 1).Text)
    Hoja1.Rows(R.Row).Delete
Loop Until R Is Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Orientacion para borrar Informacion de un grupo de columnas

Publicado por Javier Gonzalez (28 intervenciones) el 22/05/2018 16:55:03
Gracias de nuevo por la respuesta
Voy a probar la rutina

Saludos
JAG
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar