Imprimir página | Cerrar ventana

Secuenciar lista y eliminar no secuenciados

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85788
Fecha de impresión: 26/Marzo/2026 a las 23:02


Tema: Secuenciar lista y eliminar no secuenciados
Publicado por: Dany Solis
Asunto: Secuenciar lista y eliminar no secuenciados
Fecha de publicación: 02/Febrero/2021 a las 17:35
Que tal a todos tengo una situacion con los siguientes datos:

https://thumbs.subefotos.com/0b1daae9027620c917b71d842a861905o.jpg" rel="nofollow - https://thumbs.subefotos.com/0b1daae9027620c917b71d842a861905o.jpg

Lo que estoy buscando es depurar esa tabla eliminando el registro 10 siempre y cuando su numero siguiente debajo de el no sea un 11 y el valor producido del registro 11 insertarlo un registro arriba de el (10) .

Primeramente estoy intentando identificar aquellos registros que tienen un consecutivo despues del 10 pero le estoy asignando un valor "2", pero el anterior valor no encuentro como asignarle un valor para posterior eliminar aquellos que no tienen un consecutivo.

Estoy usando esta formula:

=IF(B3<>B4+1,"1",2)

Al final quiero obtener una tabla como la siguiente:

https://thumbs.subefotos.com/f12678706cc27a8631c4061c7542813ao.jpg" rel="nofollow - https://thumbs.subefotos.com/f12678706cc27a8631c4061c7542813ao.jpg

Alguna sugerencia, espero con las imagenes quede un poco mas clara la explicación.

Saludos

DS



-------------
Donde hay educación, no hay distinction de clases. (Confusio)

Dany Solis



Respuestas:
Publicado por: xavi
Fecha de publicación: 02/Febrero/2021 a las 22:42
Yo utilizaría una función VBA para limpiar las filas. En esencia se trata de recorrer la columna que contiene los valores 10/11. Solo importa los valores 10
- Si la siguiente línea es un 10, eliminar la línea
- Si la siguiente línea es un 11, copiar el valor de la celda de la tercera columna de la fila "11" a la fila "10"

Asumiendo que los datos estan en la hoja 1 y que las columnas "importantes" son la primera y la tercera, el código sería algo así:

Function Clear10()
    Dim f   As Integer
    Sheets("Hoja1").Select
    f = 1
    Do Until Cells(f, 1) = ""
        If Cells(f, 1) = 10 Then
            If Cells(f + 1, 1) = 11 Then
                Cells(f, 3) = Cells(f + 1, 3)
                f = f + 1
            Else
                Rows(f).Delete Shift:=xlUp
            End If
        Else
            f = f + 1
        End If
    Loop
    
End Function

(Escrito al vuelo)

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Dany Solis
Fecha de publicación: 03/Febrero/2021 a las 01:30
Muchas Gracias Xavi, lo he probado y hace exactamente lo que necesito.

Pueden cerrar el hilo.

Muchas gracias!!!!!

DS


-------------
Donde hay educación, no hay distinction de clases. (Confusio)

Dany Solis



Imprimir página | Cerrar ventana