Búsqueda en matriz

Se que estas ocupado y que lo que algunas veces consulto no es nada sencillo, ¿espero qué sigas mucho mejor?.
La consulta es: tengo en una celda un numero o una palabra, y tengo un área o matriz en donde tengo varias de esos números o palabras, ¿par este caso son números pero me imagino que siendo texto sera parecido verdad?
Bueno en la matriz como te dije el dato puede repetirse, como puedo hacer para que colocando el dato en la celda D15 (dato a buscar en la matriz), me aparezcan en la columna E o F lo que esta en la columna B de la matriz
Me explico al saber si ese valor existe me indicara una fila, pero el valor que deso traer se encuentra en la columna B de esa fila, y que si más abajo encuentra el valor nuevamente que me traiga lo que esta en la columna B.
Pero si ya excele los 15 primeros datos que los coloque en la culunma de la par, y así sucesivamente, tengo una fórmula que busca pero una a una, no se como poder hacer para que hago lo que te conté arriba, espero que me podas ayudar.
Por ejemplo supongamos que yo tenga en la celda D5 el valor que deseo buscar, esta en la hoja xxx, en este caso un valor por ejemplo 105
En una matriz de nombre Base_de_datos la cual cubre el área A1:AD50, en donde el valor que le dimos en la celda esta en las celdas H2, H5, H25, H45, si ves todas parecen estar en la misma columna pero eso no necesariamente, como hago para tener el siguiente resultado:
Valor de la celda =105, resultado estar en las filas 2, 5, 25, 45, pero lo que quiero que me coloque en la columna E5, son los datos que se encuentren en la columna B, siempre tomando la limitante de que si llega a 10 lo escriba en la columna siguiente o de una por medio, se que no es nada fácil. Es más creoq ue es la más difícil que he preguntado, espero que me podas ayudar

1 Respuesta

Respuesta
1
Vamos, que has hecho preguntas más bravas.
En realidad esta lo es.
La solución pasa por una columna auxiliar hacia la izquierda de tu base, pero puede estar fuera.
En ella coloca la siguiente fórmula:
SI(H2=xxx!$D$2;MAX(A$1:A1)+1;0)
Donde H2 es un de las celdas de la columna donde debe buscar el dato que ingresaste el la casilla D2 de la hoja xxx. Conceptualmente, asignará un número de orden a cada coincidencia.
Luego en la hoja donde quieres mostrar los datos, un simple Buscarv sobre una lista de 1 a 10 (o más) traerá el dato de la columna que desees de tu base.
Como siempre, te mando el archivo de prueba a tu dirección de correos para que lo estudies.
Un abrazo de los grandes!
Fernando
Nunca se me hubiese ocurrido utilizarlo de esa manera, jaja por lo que veo me falta todavía mucho para llegar a ser como vos. Pregunto en caso de que uno desee buscar a lo largo de la base de datos, es decir si ya no es la columna H sino que el numero que uno le da lo csitua en otra columna lo que hace es conbinarla con el coincidir, eso lo tengo bien claro, ademas tu archivo así lo deja ver, ¿pero pregunto que pasaría si uno crea la base de datos por medio de los formularios? ¿Cómo el que te había enseñado? ¿Cómo hace uno para que en caso de que existiera una nueva linea la fórmula se creara?, por eso estaba tratando de hacerla por medio de las macros, pero sin éxito, es más trate de modificar esta pero sin éxito:
Option Explicit
Public Sub Buscar()
Dim rDatos As Range
Dim rBienes As Range
Dim rEncontrado As Range
Dim c As Range
Set rDatos = Hoja2.Range("A1:A700")
Set rBienes = Hoja1.Range("B2:B1505")
For Each c In rBienes
Application.StatusBar = "Celda : " & c.Address(False, False)
Set rEncontrado = rDatos.Find( _
c.Value, _
rDatos.Cells(1, 1), _
xlValue, _
xlPart, _
xlByColumns, _
xlNext, _
False)
If Not rEncontrado Is Nothing Then
c.Offset(0, 1).Value = rEncontrado.Address
Else
c.Offset(0, 1).Value = "NO encontrado"
End If
Next c
Application.StatusBar = False
Set rEncontrado = Nothing
Set rBienes = Nothing
Set rDatos = Nothing
End Sub
Tratando de adecuarlo a lo que deseo, pero como te dije sin éxito.
Estuve viendo tu re-pregunta respecto a la lista de coincidencias y francamente no entiendo para qué usas la macro.
¿Quieres qué la macro haga lo mismo que la fórmula?
He notado que mucha de la gente que pregunta (en ambos sitios) piensa que las macros resuelven todo.
Entonces, ante un problema, sin más, solicitan el desarrollo de una macro. A veces, es como tratar de inventar -otra vez- la rueda...
Este caso y el archivo que te envié es una clara muestra de que -usualmente- las fórmulas son capaces de manejar el problema
Y de una manera más eficiente, ya que no necesita que nadie recuerde que tiene que ejecutar una macro o asociarlo a algún evento en particular.
De última, si ingresaste un registro más a tu base mediante la macro podrás ponerle al salir que complete la columna de fórmulas con las que falten.
La siguiente instrucción resuelve tal problema:
Range("A2"). Copy Range("A2", Cells(Range("A2").Row + Range("B2"). CurrentRegion. Rows. Count - 2, Range("A2"). Column))
Donde A2 es la primer celda con la fórmula auxiliar y B2 es la primer celda de la base con datos.
Obviamente, puedes cambiar estas referencias para adaptarlas a tu macro. Tla vez tengas que ajustar, según el diseño de tu base de datos, el valor que resta al conteo de filas ocupadas.
Prueba con esto y dime.
Un gran abrazo!
Fernando
Muchas Gracias por tu ayuda, veo que te la sabes de todas todas, y lo que me decís es cierto, uno creo que las macros solucionan casi todo, pero es por en mi caso, por falta de inmaginacion, o de mañas, ja ja un Abrazo muy Grande amigo y compañero voy a probarla y luego te cuento, por cierto muchísimas gracias or el archivo.

Añade tu respuesta

Haz clic para o