Regresar a la Pagina de Inicio

26 ene. 2012

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto.
Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV().
la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla.
[+/-] Ver el resto / Ocultar

13 comentarios:

luximpi dijo...

damián...
junto con saludarte y agradecer la labor que haces al amigarnos de este gran y utilizado programa, me interesa saber si es posible realizar este mismo ejercicio pero para una matriz nxn de datos... he intentado extenderlo pero me ha sido muy difícil.

de antemano gracias y espero tu respuesta
saludos cordiales

Damian Omar Silva dijo...

hola luximpi: aclarame un poco mas sobre que necesitas realizar, por que no comprendo el tema de "nxn" de datos, ya que no me queda muy en claro.
muchas gracias por tus palabras.
un abrazo

luximpi dijo...

me refiero a mas columnas y filas ( en verdad debiese haber dicho matriz n x m con n filas y m columnas)...
lo que necesito hacer es ubicar un codigo(ej: MT-CF) en una fila de una matriz n x m de datos y obtener la info de toda la fila, es decir, hacer la comparación que hacías al principio pero que arroje todo lo que aparece en dicha fila... no se si me explique bien y quizá es más simple por otro método. Estoy haciendo mi práctica pero el área administrativa no es el fuerte de un Ingeniero Civil Eléctrica XD jajaja muchas gracias y saludos

Damian Omar Silva dijo...

luximpi: creo que la solución a tu problema es sencilla.
verás en el ejemplo que la lista de resultados ocupa la columna E, en cuyas celdas hay una funcion INDICE() que lee del rango de la columna B. Hasta ahí todo bien.
Supongamos que tu tabla tiene 3 columnas. Con el archivo que proporcioné ya lees la segunda (B).
Ahora en la columna F colocá esta función:
=INDICE($C$1:$C$8;K.ESIMO.MAYOR($D$2:$D$8;FILA(D2)-1))

es decir: estamos ante lo mismo, solo que en lugar de leer los datos de la columna B, lo hago sobre la columna C, la tercer columna de tu tabla. y funciona muy bien

te dejo el enlace al archivo con las modificaciones, así lo estudias y ves como puedes aplicarlo a tu proyecto:
https://sites.google.com/site/damianomarsilva2/BuscarVVV02.xls
suerte y cualquier cosa me avisas.

Andrés dijo...

Damian, tengo un problema.
necesito la manera de unir un buscarv con un buscarh, hay alguna manera de hacerlo???
o alguna funcion que me permita buscar un valor verticalmente y luego buscar en esa fila un valor que esta relacionado con otro.

Damian Omar Silva dijo...

Andrés: date una vuelta por esta entrada: http://damianexcel.blogspot.com/2010/03/otras-formas-de-buscar-mas-complejas.html
creo que con Indice() y Coincidir() anidadas podes llegar a lograr lo que necesitas.
cualquier cosa me avisas.

Anónimo dijo...

DAMIAN, ESTOY VIENDO TU EXPLICACION Y ME GUSTARIA VER SI PODEMOS AVANZAR UN POCO MAS. VOS ESTAS BUSCANDO DESCRIPCIONES IDENTICAS Y ME GUSTARIA APLICAR ESTO PARA DESCRIPCIONES SIMILARES. POR EJEMPLO CODIGO ES "ACIDO SULFURICO" Y "SULFUR ACID" YO QUIERO BUSCARLA LA PALABRA "SULFUR" Y QUE TRAIGA AMBOS CODIGOS.

Damian Omar Silva dijo...

Para hacer algo sencillo y no complicarlo demasiado, estimo que podemos hacer uso de la funcion =ENCONTRAR(texto_buscado;dentro_del_texto)
Deberás borrar las funciones de la columna C y reemplazarla por esta:
=SI(NO(ESERR(ENCONTRAR("sulfuric";A2)));FILA();"")

bueno, veamos: le estoy diciendo esto: si no arroja un error la función que busca "sulfuric" dentro de la celda, entonces colocá el nro de fila en la que se encuentra.

cabe aclara que si con ENCONTRAR() no hallamos el texto buscado, esta nos devuelve un error. De ahí que primero pregunte con un =SI().

lo probé y funciona bien. cualquier duda me avisas.
gracias x tu mensaje

christian dijo...

Tengo que haer un grafico que debe contener
grupos que reiben beca
2a=5
4b=0
6a=8
8a=2
8b=0
primero quiero graficar en tipo de pastel pero que los de cero no se incluyan
y que el grafico muestre el total en este caso 15 La carrera y el tipo de Beca que otorgo y la carrera en la que lo otorgo

Damian Omar Silva dijo...

christian: deberías enviarme un correo con el archivo adjunto, así puedo analizar bien la estructura de la tabla. Avisame aquí cuando lo remitas (fijate que al pié del formulario está la dirección de correo electrónico)

Anónimo dijo...

Hola quisiera saber, como puedes resolver este mismo problema pero con macros, espero me puedas ayudar, gracias de antemano

Anónimo dijo...

no entiendo muy bien la primera parte =SI(A2=$E$1;FILA();"") que valor debo de ingresar en la parte donde dice fila();""....??

Damian Omar Silva dijo...

Dentro de la función FILA() no va ningún argumento. Lo que dice mi fórmula es: si el valor de A2 coincide con el valor ingresado en E1, entonces devolveme en qué fila se encuentra. De ahí en mas formo una "matriz" con las coincidencias y las busco.

Publicar un comentario

Regresar a la Pagina de Inicio

ENTRADAS MAS RECIENTES (ULTIMAS 10)


las + vistas

10 ULTIMOS COMENTARIOS DE MIS LECTORES

Free counters!
blog de periodismo




GRAFICA RIO BRAVO
Serigrafia-Offset
Rosario - Santa Fe - Argentina
TE: 0341 4664028