Macro en Excel con la que puedo buscar un numero en una columna, y me devuelva el posterior y el anterior del numero

Macro con la que puedo buscar un numero, en toda una columna (que detenga su búsqueda después de encontrar 5 celdas vacías juntas, sino que continué) y me devuelva el posterior y el anterior del numero, aunque sea una celda vacía o una celda llena de texto:

Ejemplo

           A                            B                    C                 D                 E

1      750

2        2

3        77

4        2

5       (CELDA VACÍA)

6        2

7        WWW

NUMERO BUSCADO:    2

RESULTADOS:

                         REPITIÓ: 3 VECES

ANTERIOR                 /               POSTERIOR

750                                              77

77                                               (CELDA VACIA)

(CELDA VACIA)                       WWW

1 Respuesta

Respuesta
2

Puedes enviarme tu archivo con 3 ejemplos de esta forma:

En la hoja1, en la columna A pones todos tus números

Caso1. En la hoja2, pones el número 2 y los resultados esperados.

Caso2. En la hoja3, pones el número 3, pero en este caso me explicas cómo funciona eso de "5 celdas vacías juntas". Suponiendo, el número en la hoja1 debe existir 20 veces, pero no te voy a mostrar las 20 veces, ya que la macro se va a detener antes, porque encontró "5 celdas vacías juntas"; pero quiero que me lo expliques con un ejemplo.

Caso3. En la hoja4, pones el número 750, no tiene anterior y solamente existe una vez, entonces qué esperas de resultado.

Caso4. Supongo que si pones un número que no exista, entonces que te regrese como resultado el mensaje "No existe"

Entre más completo envíes los ejemplos, más práctico podré enviarte la solución.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Cesar Clubpo Kertexas” y el título de esta pregunta.

Listo ya le envie el correo, muchas gracias por su ayuda.

Te anexo la macro

Sub Buscar_Numero()
'---
'   Por.Dante Amor
'---
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    Set num = h2.Range("C2")
    numero = WorksheetFunction.Trim(num.Value)
    If numero = "" Then
        MsgBox "Captura un número"
        h2.Select
        num.Select
        Exit Sub
    End If
    '
    h2.Range("E3:F" & Rows.Count).ClearContents
    j = 3
    Set r = h1.Columns("A")
    Set b = r.Find(numero, lookat:=xlWhole)
    If Not b Is Nothing Then
        celda = b.Address
        Do
            'detalle
            If b.Row = 1 Then
                h2.Cells(j, "E") = "No existe"
            Else
                h2.Cells(j, "E") = b.Offset(-1, 0)  'anterior
            End If
            h2.Cells(j, "F") = b.Offset(1, 0)       'posterior
            j = j + 1
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> celda
    End If
    MsgBox "Fin"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas