Macro para buscar datos específicos en una hoja y el resultado en otra.

Realizar una macro

Tengo que buscar números en la siguiente hoja denominada "7.Casa x Casa"

Buscar en D4:AA39, y los resultados se encuentran en COLUMNA B (C) / FILA 2 (3), cuyo resultado seria Texto Columna B (número columna C) / Texto Fila 2 (número fila 3)

Y si el resultado esta dentro de los valores en amarillo, el resultado debe decir

Encrucijada (texto columna b)

Los resultados los tengo que agregar en una hoja nueva denominada RESULTADOS.

1 Respuesta

Respuesta
1

H o l a:

Reviso el archivo y te envío el resultado.

sal u dos

¿Solamente se tiene que buscar en las celdas que están de amarillo?

Hola Dante

El rango de búsqueda es D4:AA39, y si el número buscado se encuentra en las posiciones pintadas de amarillo, el resultado debe DECIR la palabra

ENCRUCIJADA (Texto Columna B)

y los números que se encuentran dentro del rango , pero fuera de esas posiciones, el resultado se compone de 

 Texto Columna B (número columna C) / Texto Fila 2 (número fila 3)

Ejemplo si busco el número 18

ENCRUCIJADA (C1) (posición E6)

C1(9) / C5(9) (posición M16) y así los demás que aparezcan. 

Gracias

Pablo

Perdona, pero sigo confundido.

Tu definición es algo ambigua.

Esto es lo que pones:

"

El rango de búsqueda es D4:AA39, y si el número buscado se encuentra en las posiciones pintadas de amarillo

"

Por ejemplo el número 13; el número 13 está en la celda F4, la celda F4 está dentro del rango("D4:AA39), pero F4 no está de amarillo, entonces?

A lo mejor es un detalle de apreciación.

Vamos a suponer el rango de búsqueda D4:E6, ese rango está de amarillo, quieres que busque en toda la hoja o solamente en el rango "D4:¿E6"?

Entonces, debo buscar solamente en los rangos que están de amarillo, podrías responder solamente esta pregunta con un "Sí" o con un "No".

Hola Dante la respuesta es NO

se debe buscar en el rango D4:AA39

cambia la forma de expresar el resultado , ** si el numero buscado se encuentra en las celdas pintadas de amarillo. DEBE DECIR ENCRUCIJADA (tecto columna B) ,

** si aparece en las demás celdas de ese mismo rango el resultado es

Texto Columna B(número columna C) / texto Fila 2 (número fila 3) 

Gracias 

Pablo 

Disculpa, pero sigo sin entender las explicaciones que me pones.

"

Se debe buscar en el rango D4:AA39

Cambia la forma de expresar el resultado, ** si el numero buscado se encuentra en las celdas pintadas de amarillo. DEBE DECIR ENCRUCIJADA (tecto columna B),

** Si aparece en las demás celdas de ese mismo rango el resultado es

Texto Columna B(número columna C) / texto Fila 2 (número fila 3)

"

Por eso solamente pedí que respondieras "SÍ" o "NO", pero me vuelves a poner explicaciones ambiguas.

Dante Perdona que te respondí de más . El tema es que creo no se entiende la idea, por eso intente volver a explicarlo.

El rango donde se busca es siempre D4:AA39

Gracias

Pablo

Tu petición original es esta:

"

Y si el resultado esta dentro de los valores en amarillo, el resultado debe decir

Encrucijada (texto columna b)

"


Y después pones esto:

"

Se debe buscar en el rango D4:AA39

Si el numero buscado se encuentra en las celdas pintadas de amarillo. DEBE DECIR ENCRUCIJADA (tecto columna B),

** Si aparece en las demás celdas de ese mismo rango el resultado es

Texto Columna B(número columna C) / texto Fila 2 (número fila 3)

"


Estás poniendo algo nuevo que no estaba en la petición original, de ahí toda la confusión.

Entonces, podías aclarar nuevamente qué es lo que necesitas.

Hola Dante, lamento que no se entienda la pregunta,

Pero se me ocurre lo siguiente para intentar comprender la idea.


Cuando busca un numero SIEMPRE DENTRO DEL RANGO D4:AA39, el resultado se compone de la siguiente manera.

Texto Columna B (número columna C) / Texto Fila 2 (número fila 3)

Pero en el gráfico que subí hay una variante de resultado. Que es la que intento explicar, si el número buscado se encuentra dentro de las celdas pintadas de amarillo, ya que esta manera de reflejar el resultado no seria valida porque hay tres numeros y no dos en la intersección.

entonces, quizás para que sea mas fácil


Si el número buscado tiene como resultado EL MISMO TEXTO tanto en Columna B, como en fila 2, por ejemplo C2 Y C2, que diga la palabra ENCRUCIJADA C2.

Por ejemplo el 22 (ubicaciòn I12) Esta en la columna B , cuyo texto es "C3" y en la fila 2 cuyo texto es "C3". es decir que el resultado seria ENCRUCIJADA C3.

Y si se encuentra en cualquier otra posición dentro del Rango D4:AA39 resultado seria

Texto Columna B(número columna C) / texto Fila 2 (número fila 3)

Hay otro 22 en la ubicación K9 cuyo resultado es
C2 (13) / C4(9)
y así con todos los 22 que aparezcan.

Espero haber sido un poco mas claro.

Muchísimas gracias por tu tiempo

Pablo

Te envío la macro.

Sub Buscar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Ingreso datos,Arcanos")
    Set h2 = Sheets("RESULTADOS")
    Set h3 = Sheets("7.Casa x Casa")
    '
    'u = h2.Range("C" & Rows.Count).End(xlUp).Row
    u = h2.UsedRange.Rows(h2.UsedRange.Rows.Count).Row
    If u < 5 Then u = 5
    h2.Range("C5:AA" & u).ClearContents
    Set r = h1.Range("Q14:AX30")
    Set r2 = h1.Range("L12:N35")
    Set r3 = h3.Range("D4:AA39")
    '
    For j = 3 To h2.Cells(3, Columns.Count).End(xlToLeft).Column
        f = 5
        'busca en rango1
        Set b = r.Find(What:=h2.Cells(4, j), LookIn:=xlValues, LookAt:=xlWhole, _
                       SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                'detalle
                If h1.Cells(b.Row, "P") <> "" Then
                    izq1 = ObtenerDato(h1.Cells(b.Row, "O"))
                    izq2 = ObtenerDato(h1.Cells(b.Row, "P"))
                    top1 = ObtenerDato(h1.Cells(12, b.Column))
                    top2 = ObtenerDato(h1.Cells(13, b.Column))
                    cad = izq1 & "(" & izq2 & ")" & " / " & top1 & "(" & top2 & ")"
                    h2.Cells(f, j) = cad
                    f = f + 1
                    If f = 31 Then Exit For
                End If
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
        '
        'Busca en rango2
        Set b = r2.Find(What:=h2.Cells(4, j), LookIn:=xlValues, LookAt:=xlWhole, _
                       SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                izq1 = ObtenerDato(h1.Cells(b.Row, "C"))
                cad = "ARCANO CASA " & izq1
                h2.Cells(f, j) = cad
                f = f + 1
                If f = 31 Then Exit For
                Set b = r2.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
        '
        'Busca en 7.casa
        Set b = r3.Find(What:=h2.Cells(4, j), LookIn:=xlValues, LookAt:=xlWhole, _
                       SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                'detalle
                If h1.Cells(b.Row, "C") <> "" Then
                    If h3.Cells(b.Row + 1, "B") = "" Then fila = b.Row - 1 Else fila = b.Row + 1
                    izq1 = ObtenerDato(h3.Cells(fila, "B"))
                    izq2 = ObtenerDato(h3.Cells(b.Row, "C"))
                    top1 = ObtenerDato(h3.Cells(2, b.Column))
                    top2 = ObtenerDato(h3.Cells(3, b.Column))
                    If izq1 = top1 Then
                        cad = "ENCRUCIJADA " & izq1
                    Else
                        cad = izq1 & "(" & izq2 & ")" & " / " & top1 & "(" & top2 & ")"
                    End If
                    h2.Cells(f, j) = cad
                    f = f + 1
                    If f = 31 Then Exit For
                End If
                Set b = r3.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas