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
H o l a:
Reviso el archivo y te envío el resultado.
sal u dos
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 ':)
- Compartir respuesta