Usar BUSCARV (Excel) en listas con valores repetidos.

viernes, julio 18, 2008

Usamos BUSCARV para encontrar en una tabla el valor correspondiente a otro determinado valor. Esta función, así como otras funciones de búsqueda en Excel, tiene una limitación. Si el valor de búsqueda tiene más de un valor correspondiente en la matriz de búsqueda, Excel dará como resultado el primer valor (en orden de aparición).
Supongamos esta lista de órdenes de compra.



Cada producto aparece tres veces, cada vez con distinto precio. Si usamos BUSCARV para averiguar el precio de los tornillos, el resultado será 7.65



Como explicamos antes, BUSCARV nos dará siempre el valor que aparece en primer lugar en la matriz. Si queremos encontrar el valor correspondiente al argumento de búsqueda que no sea el primero en la matriz, tenemos que usar una fórmula matricial como esta propuesta por Chip Pearson

={INDICE(compras,K.ESIMO.MENOR(SI(DESREF(compras,0,0,FILAS(compras),1)=B12,FILA(DESREF(compras,0,0,FILAS(compras),1))-FILA(DESREF(compras,0,0,1,1))+1,FILA(DESREF(compras,FILAS(compras)-1,0,1,1))+1),B13),3)}



Esta fórmula supone que sabemos cuantas instancias de Tornillos hay en la lista. Si buscamos una instancia inexistente, por ejemplo el cuarto valor de Tornillos, obtenemos un resultado #REF!

Podemos adaptar la fórmula para que dé el último valor de la lista

={INDICE(compras,K.ESIMO.MENOR(SI(DESREF(compras,0,0,FILAS(compras),1)=B12,FILA(DESREF(compras,0,0,FILAS(compras),1))-FILA( DESREF(compras,0,0,1,1) )+1,FILA( DESREF(compras,FILAS(compras)-1,0,1,1))+1),CONTAR.SI(DESREF(compras,0,0,FILAS(compras),1),B12)),3)}



Si queremos buscar el máximo valor de Tornillos, sin relación al orden de aparición en la lista, podemos usar esta fórmula matricial:

={MAX((A2:A10=B12)*(C2:C10))}



El archivo con las fórmulas se puede descargar aquí.



Technorati Tags:

102 comments:

Anónimo,  18 julio, 2008 22:58  

Justo has dado en algo que llevo buscando hace tiempo. La pregunta es: ¿cómo hacer con el buscarv para que SUME todos los resultados que encuentre? Es decir, tengo una persona con dos días de baja por enfermedad, otros tres por asuntos particulares y uno por ausencia injustificada. Si utilizo buscarv me da dos días, salvo que haya trabajado previamente el archivo totalizando los días de ausencia. ¿Cómo se podría utilizar el buscarv para que sume los días de todos los registros de una determinada persona?

Jorge L. Dunkelman 19 julio, 2008 09:47  

Hola

para sumar todos los valores que respondan a un criterio tienes que usar SUMAR.SI, no BUSCARV.
Si quieres sumar todos los valores que respondan a más de un criterio tienes que usar algunas de las técnicas que explico en esta nota.

Benjamín,  26 septiembre, 2008 23:53  

Hola, Gracias por el Tuto, de BuscarV en Np Repetidos, pero la Furmala me arroja error, (#NUM!)
Yo estoy Buscando texto o un numero de parte en una matriz, pero quiero que me de el segundo valor no el primero.


Espero me ayudes.

Jorge L. Dunkelman 28 septiembre, 2008 18:46  

Benjamín

cómo encontrar el segundo valor está explicado en la nota. Si recibes un error #NUM tienes que revisar tus datos y tu fórmula (puedes enviarme el cuaderno para que vea donde pueda estar el problema).

Qué es un Tuto???

Benjamin,  29 septiembre, 2008 22:01  

Hola gracias por tu interes de ayudarme, me puedes enviar tu mail porfavor a este correo para enviarte la hoja de excel.

benjadx@live.com.mx

Tuto, es tutorial o explicación de como hacer cierto ejercicio o uso de algun programa etc.. =D

Jorge L. Dunkelman 01 octubre, 2008 00:36  

El mail aparece en la columna izquierda del blog, denajo de la foto.

Petit Comite 28 octubre, 2008 14:39  

Jorge, estoy intentado realizar la formula matricial empleando Indice y Coincidir, y no soy capaz de conseguirlo.
Tú tienes ya construida esa estructura ?
Coincidir(Valor ref;Matriz; tipo coincidencia)
Mi estructura es:
INDICE(Matriz;K.ESIMO.MENOR((COINCIDIR;k));Columna)

Mi error está en la función COINCIDIR.No soy capaz de que no considere los valores no coincidentes con el valor de búsqueda.

Jorge L. Dunkelman 29 octubre, 2008 11:43  

Hmmm, hay algunas posibildades, como que estás usando COINCIDIR aproximada sin ordenar la lista, por ejemplo.
Si quieres puedes mandarme el archivo para que le de un vistazo.

Octavio Hernández 11 marzo, 2010 02:12  

Hola,
Buenas tardes, tengo una duda, estoy intentando utilizar buscarv para encontrar el primer valor en una matriz en donde el elemento que busco se repite varias veces, en el artículo comentas que esta función devolverá el primer valor que aparezca, qué es lo que yo necesito, pero al utilizar la fórmula, me aparece el último valor, tienes idea de qué puedo estar haciendo mal?
Saludos y gracias

Jorge L. Dunkelman 11 marzo, 2010 13:26  

Octavio,
tendrías que enviarme el archivo para que pueda hacerme una idea. Por favor, fijate en lo que pongo en la pestaña Ayuda.

Diego Blanco,  08 abril, 2010 19:13  

Muchas gracias por la explicación sobre la función BUSCARV. Quería consultarte: Tomando tu ejemplo, supongamos que el Precio de cada producto "Tonillos" "Clavos" "Tuercas" es el mismo a lo largo de toda la lista, y lo que deseo es que se repita ese precio cada vez que aparezca la palabra "Tonillos" "Clavos" "Tuercas" en el listado de resultado (tomando de ejemplo la segunda imagen de este post, debajo de "Tornillos" aparecería de forma aleatoria y continuada "Tonillos" "Clavos" "Tuercas").

Jorge L. Dunkelman 08 abril, 2010 19:47  

No me queda clara tu consulta. Hasta donde logro entender sería suficiente usar sencillamente la función BUSCARV.

Anónimo,  17 abril, 2010 01:57  

Estimado JLD, muchas felicidades por tu Blog. Es bastante bueno e ilustrativo.

Quiero compartir mi formula para la consulta de "Precio" y "Último valor en la lista".

Mi proupuesta para "Precio" es:

=INDIRECTO(DIRECCION(Producto*G13+SI(Producto=1,G13*2-Producto,SI(Producto=2,G13,1)),8,1,,))

Y para "Último valor en la lista" es:

=INDIRECTO(DIRECCION(Producto+7,8,1,,))

Donde "Producto" en mi formula, es un nombre definido por:

=SI(EXTRAE(Hoja1!$G$12,1,2)="To",1,SI(EXTRAE(Hoja1!$G$12,1,2)="Cl",2,3))

Que me parece mucha más sencilla y práctica.

Christian Mendoza, México.
Saludos!!!

Anónimo,  17 abril, 2010 02:19  

Que tal JLD, muchas felicidades por tu blog. Es bastante bueno e ilustrativo. Quiero compartir mi método para realizar las consultas de "Precio" y "Último valor en la lista".

Para "Precio" utilicé la siguiente fórmula:

=INDIRECTO(DIRECCION(Producto*B13+SI(Producto=1,B13*2-Producto,SI(Producto=2,B13,1)),3,1,,))

Y para "Último valor en la lista", ésta otra fórmula:

=INDIRECTO(DIRECCION(Producto+7,3,1,,))

En estos cálculos el nombre "Producto" es un nombre con fórmula definido por:

=SI(EXTRAE(Hoja1!$B$12,1,2)="To",1,SI(EXTRAE(Hoja1!$B$12,1,2)="Cl",2,3))

Esta forma de llegar a los mismos resultados me parece mucho más sencilla y práctica.

Christian Mendoza, México.

Saludos!!!
Nota: Hice un comentario anterior pero tuve un error al copiar las formulas. Había pegado $G$ en vez de $B$ y 8 en vez de 3.

Anónimo,  05 mayo, 2010 00:27  

Tengo un problema que necesitaria de la ayuda de alguien para poder resolverlo.

Tengo una base de datos en la cual entre otros datos tengo la columna "Direccion" y la columna "Altura". Ahora, esto necesito codificarlo segun que calle sea y la altura. Tengo otra base que vendria a ser mi Matriz donde me indica cada calle y desde que altura hasta que altura corresponde a que codigo.
El problema que se me presenta es que con la formula buscarv no puedo darle parametros adicionales (si coincide en el rango de alturas).

En un ejemple practico:
Tengo en mi base una fila que en la columna "Direccion" me indica que es la calle Av Alberdi y en la columna "Altura" me indica que es al 1450.

Mi matriz de datos es la siguiente:
Altura
Calle Inicio Fin Canalizador
Av Alberdi 1100 1500 1406-18
Av Alberdi 1600 1900 1406-19
etc

Como hago para poder cruzarlo indicando que debe coincidir el dato "Direccion" con "Calle" y ademas tiene que cruzar "Altura" con el rango de Inicio y Fin para poner el "Canalizador" correspondiente??

Si alguien me puede dar una mano se lo agradeceria ya que me estoy quemando pero no me sale.

Muchas gracias.
Marcos

Jorge L. Dunkelman 05 mayo, 2010 10:22  

Creando un campo auxiliar donde los valores son una combinación de "dirección" y "altura" (con el operador &). Luego se aplica BUSCARV a ese campo.

Florencia 02 julio, 2010 17:18  

Hola, muy bueno este tutorial! por favor, podras ayudarme con lo sgte.? tengo una base de datos compuesta por A:CLIENTES b:NROS.SOLICITUD en otra hoja quiero que al seleccionar el cliente de la lista, me muestre en una celda los nros. de solicitud que encuentre para ese cliente. Uso la función BuscarV, pero sólo me devuelve el primer numero que encuentra, como puedo lograr que me muestre todos los resultados hallados? muchisimas gracias!

napanno 13 noviembre, 2010 18:11  

Buenos días, estoy trabajando en un control de salidas de expedientes y estoy atorado en la ultima parte del proyecto pero el mas importante, un expediente puede salir infinidad de veces y cada salida es un registro en la base de datos, ahora bien lo que necesito en este caso es no saber ni el primero ni el ultimo sino toda la bitácora, se que si filtro la base de datos la puedo ver pero quiero ser mas técnico y esta formula me serviría pero quiero que esta información se muestre en otra hoja, me podrían ayudar en eso.

Saludos.

Jorge L. Dunkelman 13 noviembre, 2010 19:39  

napanno,
tu mejor opción es usar un tabla dinámica para generar el reporte de cada expediente, no fórmulas.

Anónimo,  25 noviembre, 2010 00:40  

Hola Jorge, te quería hacer dos consulta.
Resulta que tengo un ejercicio sobre viáticos

en la celda B se encuentra el nombre de los empleados, en la C los apellidos, y en la celda AI la cantidad de viáticos realizados en 1 mes.

La primera parte me pide que en una celda aparezcan el nombre y apellido de el empleado que hizo mas viáticos en el mes

yo use esta función:
=INDICE(B2:B8&C2:C8;COINCIDIR(MAX(AI2:AI8);AI2:AI8;0))

me devuelve el nombre y apellido pero juntos, ¿cómo podría hacer para que aparezcan separados?

Y aquí va la otra consulta.
Dentro del mismo ejercicio la segunda parte me piden que en otra celda coloque el nombre y apellido del empleado que realizo menor cantidad de viáticos, y que debe aparecer la trama en rojo si la cantidad de viáticos realizada es menor o igual a 10, o azul en caso contrario

te pido disculpas si esto no va aquí, es que tengo la prueba mañana y estoy desesperado.

saludos y espero una pronta respuesta

Jorge L. Dunkelman 25 noviembre, 2010 06:48  

Para que los nombres aparezcan separados usas

=INDICE(B2:B8&" "&C2:C8;COINCIDIR(MAX(AI2:AI8);AI2:AI8;0))

Para extraer el mínimo usas obviamente
=INDICE(B2:B8&" "&C2:C8;COINCIDIR(MIN(AI2:AI8);AI2:AI8;0))

Para determinar el color de la trama dinámicamente tienes que usar Formato Condicional con la opción fórmula con las reglas

=A12<=10 para la trama roja y =A12>10 para la azul

Anónimo,  25 noviembre, 2010 15:09  

Jorge sos un grande!!!, muchísimas gracias, hoy tengo una prueba sobre excel y me he pasado días rompiéndome la cabeza, leyendo tutoriales, etc,

te lo agradezco mucho

Anónimo,  30 noviembre, 2010 10:55  

Hola Jorge. Tengo un excel planteado y no soy capaz de aplicar esta fórmula para que me devuelva unos valores concretos de diversas filas que se corresponden al mismo valor. ¿Puedo enviártelo por mail?

Muchas gracias

Jorge L. Dunkelman 30 noviembre, 2010 11:31  

Si, pero por favor, lee lo que pongo en el enlace Ayuda (en la parte superior del blog)

Anónimo,  09 diciembre, 2010 14:29  

Hola Jorge,

La fórmula que he aplicado me devuelve "REF" como error. Puede ser que sea porque la matriz de la que extrae los datos tiene filas vacías intercaladas? Esta matriz, que tú defines como "compras", no debe comprender la fila en la que se encuentran los nombres de las columnas, verdad?

Muchas gracias.

Jorge L. Dunkelman 09 diciembre, 2010 18:00  

El nombre "compras" se refiere al rango A2:C10, es decir, no incluye los nombres de las columnas.
Las filas en blanco no deben influir en el resultado si los rangos están definidos en forma correcta.
Uno de los motivos del error #REF en esta fórmula puede ser que estés buscando una instancia que no existe, talcomo pongo en la nota.

Anónimo,  10 diciembre, 2010 13:50  

Hola Jorge,

Aún me aparece el error REF aunque ya he considerado las opciones de tu nota. ¿Podría deberse a que la matriz de datos ("compras") está en una pestaña diferente de la que contiene el valor "B12" (en la misma hoja)?

Tengo un par de dudas relacionadas con la aplicación de la fórmula que pueden ser las causantes de que la esté escribiendo mal:

- ¿Porqué escribes "2" cómo "área" (último campo de la fórmula global)? En la original de Chip Pearson él escribía un 3 y no me queda claro a qué se refiere este valor.

- Al aplicar la fórmula Desref, ¿porqué no pones un "2" en lugar de un "0" en el valor correspondiente a "columnas", si el precio está dos columnas a la derecha del nombre "tornillos"?

Muchas gracias de nuevo Jorge, llevo un par de días peleándome con esta fórmula sin mucho éxito!

Jorge L. Dunkelman 11 diciembre, 2010 09:46  

Te sugiero que descargues el archivo con el ejemplo dela nota y trates de aplicarlo a tu caso.

Anónimo,  22 diciembre, 2010 10:39  

Hola Jorge,

Mi matriz de datos está compuesta por diferentes objetos ordenados de forma que hay tres filas seguidas con datos relativos a cada uno de los objetos. He aplicado tu fórmula para que me devuelva el valor de las diferentes columnas para cada objeto, pero sólo consigo un resultado satisfactorio para el objeto que ocupa las tres primeras filas de mi matriz (haciendo una analogía, sería como si en tu ejemplo la fórmula sólo se cumpliera para "tornillos" pero para "clavos" y "tuercas" obtuvieras siempre "0" como resultado). ¿Se te ocurre algún motivo por el cual puede darse este fenómeno? Si la fórmula responde bien para un objeto debería hacerlo para todos y no sólo para el que encabeza la matriz, ¿no?


Muchas gracias de nuevo por atender a nuestras dudas desde tu bloc!

Jorge L. Dunkelman 23 diciembre, 2010 07:14  

Te sugiero que me envíes el archivo (por favor, leé lo que pongo en el enlace Ayuda).

Anónimo,  24 febrero, 2011 20:25  

Hola..
estoy tratando de que la formula me de sobre el mismo ejemplo pero me da error en esta parte de la formula (SI(DESREF(B11:D19;0;0;FILAS(B11:D19);1 a continuacion de K.ESIMO.MENOR
No encuentra el valor.

Espero comentarios...

Gracias

Jorge L. Dunkelman 25 febrero, 2011 08:00  

Pra saber por qué te da error tendría que ver tu archivo.

Anónimo,  08 abril, 2011 23:35  

Hola, porque cuando pulsas sobre la celda del resultado del valor y luego te vas a la barra de formulas y sin variar ningun dato te sale el error VALOR!?

Jorge L. Dunkelman 09 abril, 2011 09:17  

Hay un error en tu fórmula, obviamente. Puede ser que se refiera a una celda que contiene un error. No entiendo del todo la descripción del problema. ¿A qué te refieres con ir a la barra de fórmulas?

Anónimo,  20 abril, 2011 17:28  

Para sumar datos repetidos, se puede utilizar la funcion "sumar.si.conjunto()" o en ingles "sumifs()"

Jorge L. Dunkelman 20 abril, 2011 19:26  

Bueno, no exactamente. SUMAR.SI.CONJUNTO permite sumar en base a más de un criterio. En versiones anteriores a Excel 2007, lo hacemos con SUMAPRODUCTO.

Marcu 22 julio, 2011 23:52  

Hola Jorge, ésta fórmula es excelente pero no logro adaptarla a mi file, como podría hacer para mostrárte en donde me surgen los valores #num o #value?

Jorge L. Dunkelman 23 julio, 2011 06:25  

Puedes enviar el archivo por mail privado siguiendo las instrucciones que aparecen en el enlace Ayuda (en la parte superior del blog).

chuk 01 septiembre, 2011 14:42  

Hola Jorge,

Ando dándole vueltas a si se puede adaptar para que ofrezca como resultado todas las coincidencias y no una concreta. Pero no doy con ello.
Es posible?

Gracias y un saludo

Jorge L. Dunkelman 01 septiembre, 2011 14:56  

No, no es posible. No se puede cambiar la estructura de la hoja con funciones. Es decir, no podemos poner resultados calculados en una celda en otra celda.
Tus alternativas son: Autofiltro, Filtro Avanzado, Tablas Dinámicas.
Ultimamente he recibido varias consultas sobre este tema y estaré publicando una nota en breve.

Espirigonzalez 17 octubre, 2011 05:02  

Buenas, he estado leyendo tu blog como unas 5 horas seguidas, haciendo pruebas y demás, es una maravilla. Muchas gracias por tu tiempo.. he usado rangos dinamicos dependientes, las listas desplegables y todo bien. Ahora el tema es que me he atascado. He leido mucho sobre algunas pistas que das a otra gente con temas similares pero no logo entender exactamente como hacerlo. Te cuento:
Tengo dos listas desplegables dependientes una de otra. Al finalizar de elegir en las dos quiero que en la tercera casilla me salga el precio del producto. Ese precio depende de esas dos casillas (en el futuro serán 5 variables)
El problema está al intentar usar BUSCARV o similares.

Los datos son 4 opciones de cada una opcion 2 opciones más y de cada una de ellas 15 opciones más.. No se como hacer que "reconozca la elección de cada desplegable dependiente" y luego elija en la tabla de datos la cifra correspondiente.

Me valdría por ejemplo si detecta "caso1" leer el dato de "columna1" , si detecta "caso2" y "opción2" leer de "columna2"
¿Eso se puede hacer?

Espero haberme explicado.
Muchisimas gracias por tu tiempo.

Jorge L. Dunkelman 18 octubre, 2011 19:35  

Una solución es crear un campo auxiliar, que puede estar oculto, donde se combinan los valores de las opciones. De esta manera se crea una valor único. Este valor sirve como argumento de búsqueda en una tabla creada con los valores correspondientes a cad combinación.

Anónimo,  01 febrero, 2012 16:43  

Buenos Días, soy nuevo en este blog, me parece muy valioso, aproposito, pero veo que los post son un poco antiguos, me gustaria recibir respuesta para saber si aún esta activo, gracias por la atención.

Jorge L. Dunkelman 01 febrero, 2012 16:55  

Estimado, el blog sigue muy activo. Te invito a apretar el enlace "Página Principal" al pie de la plantilla. La última entrada es del 29/01/2012

MeTaXTrEmE 21 marzo, 2012 18:16  

HOLA COMO HAGO PARA QUE AL BUSCARV ME SUME VARIAS CELDAS Q COINCIDEN CON EL VALOR BUSCADO YA QUE EL BUSCAR V SOLO ME PERMITE BUSCAR EL PRIMER VALOR QUE ENCUENTRA Y NECESITO LA SUMA DE ELLOS

Jorge L. Dunkelman 21 marzo, 2012 19:33  

Ciertamente no con BUSCARV. Excel tiene varias funciones para sumar (o contar) de acuerdo a varios criterios. En las versiones recientes de Excel contamos con SUMA.SI.CONJUNTO, por ejemplo. Pero también podemos usar SUMAPRODUCTO o fórmulas matriciales. Esta nota, un poco vieja pero aun actual, toca el ema.

Gonzalo Ramos 17 mayo, 2012 19:11  

Buenas, tengo un inconveniente. Tengo una base de datos que alimenta una Pivot, en esta base de datos tengo que traer valores de otra, con un valor de referencia que se repite. Por lo cual si hago un vlookup me va a traer varias veces ese valor que quiere buscar. Yo quiero que lo traiga una sola vez, si se repite el valor de referencia que me ponga 0. Se podrá?

Jorge L. Dunkelman 19 mayo, 2012 12:45  

Gonzalo, no me parece que VLOOKUP sa la herramienta más adecuada en tu caso. Pero si queremos usar VLOOKUP podrías combinarla con CONTAR.SI para extraer el valor en la primer instancia y 0 si no es la primer instancia. Para determinar el orden a aparición de un valor (el de referencia en tu caso, supongamos que esta en la columna A a partir de la fila 2), usarías

CONTAR.SI($A$2:A2;A2)

y la copiás a lo largo del rango. Fijate en los símbolos $.

Esta fórmula da 1 la primer vez que un valor aparece, 2 la segunda vez y así sucesivamente.

La fórmula combinada sería

=SI(CONTAR.SI($A$2:A2;A2)=1;BUSCARV(....);0)

Gonzalo Ramos 21 mayo, 2012 19:58  

Excelente! Muchas gracias! Funciono perfecto! Ahora bien, a esta tambíen le puedo agregar otra funcion Si es error(N#A) me ponga cero, verdad?

Jorge L. Dunkelman 22 mayo, 2012 14:42  

Así es. Con Excel 2007/10 se puede usar también SI.ERROR

Grace,  25 mayo, 2012 19:56  

Hola!
Ojalá me puedas ayudar.
Tengo un problema con el BUSCARV, no se si este utilizando la fórmula correcta.

Mi Base de Datos cuenta con 3 Columnas:
Numero de tienda, Código de Barras y Unidades Vendidas.

Y tengo mi Archivo en donde quiero pasar las Unidades Vendidas de cada tienda y cada código.
Esto lo tengo que hacer, porque me lo piden en ese archivo exactamente y mi base de datos yo lo bajo de un sistema aparte.

Como le puedo hacer para que se vacíen las unidades vendidas?

espero que si me haya explicado bien!

gracias!

userpc Luis Angel 25 mayo, 2012 20:50  

Hola Mucas Felicidades por tu blog y gracias por el tiempo que te llevas en contestar tengo un problema: estoy haciendo un Stock con Materiales-Entradas-Salidas y reporte de materiales pero quiero que en reporte de materiales asi como en tu ejemplo me muestre en que fecha fueron sacados los materiales (SALIDAS) como es bodega sacan materiales en varias fecha y sus decripciones ojala y me explique o me entiendas gracias por los aportes

Jorge L. Dunkelman 26 mayo, 2012 11:51  

No entiendo que quieres decir con "que se vacíen las unidades vendidas". Pero suponiendo que quieres totalizar las ventas por tienda, tienes que usar la función SUMAR.SI, no BUSCARV

Jorge L. Dunkelman 26 mayo, 2012 14:21  

Luis Angel,
en tu caso usaría una tabla dinámica poniendo el camo de fechas en el área de filas.

Amanda 23 julio, 2012 15:09  

Buenos días Jorge:

A ver si me puedes ayudar... porque creo q la solución es más fácil de cualquiera de las opciones que estoy intentado.

Mi matriz tiene en la columna A los códigos de empresas en la B un tipo de actuación en dicha empresa, y en la C la cantidad de actuaciones que hemos tenido de cada tipo.

Los tipos de actuación son 4, pero en función de la empresa puedo tener, 1 actuación, 2, 3 o las 4.

Necesito tener una tabla en la que para cada empresa me devuelva el número de actuaciones para cada tipo, o 0 si no ha habido ninguna. Sería lo equivalente a "copiar" en fragmento de la tabla que corresponde a una sociedad en una pestaña diferente.

He probado con un buscarv para buscar la empresa en la tabla, que me devuelve el valor de la tabla B y combinarlo con un "si" que me devuelve el valor que busco en la celda que quiero, pero eso solo me sirve para el primer tipo de actuación.

No se si me he explicado.

A ver si me puedes ayudar.

Muchas gracias

Pablo Soifer 15 agosto, 2012 23:48  

Estimado,
Necesito una ayuda.
Teniendo la celda A1=4 B1=2 y C1=4, como hago con buscarh que el valor que me de es el 4 de C1 y no el de A1. Si quieres puedo enviarte un mail con un ejemplo. Muchas gracias

Jorge L. Dunkelman 16 agosto, 2012 07:20  

Si, enviame un mail porque la consulta no está clara (¿cuál es el criterio de búsqueda?)

Pablo Soifer 16 agosto, 2012 15:42  

Jorge. Gracias por tu respuesta. Me indicas tu dirección de mail para enviarte el ejemplo?. Gracias

Jorge L. Dunkelman 16 agosto, 2012 18:42  

Fijate en el enlace Ayuda, en la parte superior del blog.

Erick 25 agosto, 2012 15:46  

buenos dias tengo una hoja de calculo donde tengo las horas de entrada y salida de personal extraidas del un sistema pero me interesa filtrar por persona la primera entrada del dia y la ultima salida
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 6:27:08 am
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 6:59:02 am
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 7:01:20 am
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 10:51:36
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 10:51:54
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 10:54:14
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 10:56:24
Alvarez Garcia, Lenis Tamara 20249 8/11/2012 10:59:24
Añez Castillo, Edilia Josefina 13922 8/11/2012 7:57:26 am
Añez Castillo, Edilia Josefina 13922 8/11/2012 8:02:20 am
Añez Castillo, Edilia Josefina 13922 8/11/2012 8:07:20 am
Añez Castillo, Edilia Josefina 13922 8/11/2012 9:02:56 am
Añez Castillo, Edilia Josefina 13922 8/11/2012 9:05:54 am
Añez Castillo, Edilia Josefina 13922 8/11/2012 11:38:16

Jorge L. Dunkelman 26 agosto, 2012 14:58  

Erick, no con BUSCARV (el tema de la nota) sino con MIN para encontrar la hora de entrada y MAX para encontrar la hora de salida. Como hay que separar según persona una forma práctica de hacerlo sería usando una tabla dinámica. En el área de las filas ponemos los trabajadores y en el área de los datos ponemos la hora dos veces; un campo lo resumimos con MIN (entrada) y el segundo con MAX (salida).
También se puede hacer directamente con fórmulas.

Cesar 13 septiembre, 2012 00:37  

Hola jorge, te consulto como hacer para que en lugar de hallar el valor "maximo" de los tornillos, me encuentre el valor "minimo" (Remite al ejemplo planteado"Si queremos buscar el máximo valor de Tornillos, sin relación al orden de aparición en la lista, podemos usar esta fórmula matricial:

")

Jorge L. Dunkelman 13 septiembre, 2012 08:48  

César,

tendrías que usar esta fórmula, introduciéndola en forma matricial (Ctrl+Mayúsculas+Enter)

=MIN(SI((A2:A10=B12)*(C2:C10)=0,"",(A2:A10=B12)*(C2:C10)))

Ferandoes,  19 septiembre, 2012 13:05  

Hola,

Tengo un problema historico con BuscarV con valores repetidos que no para de salirme y que nunca consigo solucionar, he leido tu ejemplo pero no me acaba de funcionar.

Te cuento mi caso y espero que me puedas ayudar. Yo tengo un listado de personas con un codigo que liquidan sus gastos a un centro de coste. Pero en ocasiones no liquidan sus gastos al 100% al mismo centro de coste sino que algunas veces lo hacen diferentes % a distintos centros de coste. Y yo lo que quiero es dentro de la misma hoja poner el Codigo de la persona y los porcentajes a los que liquida a los diferentes centros de coste, ojo no a que centros de coste sino a los %.
Ejemplo.

Fulanito--- codigo de fulanito---1ºporcentaje(puede ser el 100% o no)---2º %, etc.... asi hasta que la suma de los % sea el 100%, puede ser un %, dos, tres, cuatro o 100 en el caso de que liquide un 1% en 100 centros de coste.

Para todo esto en una hoja tengo los nombres con los codigos y otra tengo por grupos de centros de coste los nombres, los codigos y los %.

Espero haberme explicado correctamente.

Necesito tu ayuda porque llevo ya varios dias y no hay manera de solucionarlo

Jorge L. Dunkelman 23 septiembre, 2012 18:35  

¿Por qué con BUSCARV? Te sugiero que pongas todos los datos en una única hoja (bse de datos plana) y hagas los resúmenes usando tablas dinámicas.

Cesar 26 septiembre, 2012 01:06  

Estimado
Buenas noches. me remito a usted para realizarle una consulta sobre un inconveniente que tengo en un archivo .XLS. Tras investigar un poco, me encontré con el Blogspot, donde comente, dentro del foro del mismo, mi inquietud, la cual muy atentamente respondiste, motivo por el cual te agradezco muchisimo.
Te comento que el problema lo tengo al realizar un "BUSCARV" con valores múltiples. A continuación detallo el libro y lo necesitado.
En la columna "A" tengo un listado de números (legajos), los cuales se repiten entre 2 y 5 veces dentro de la misma columna.
En la columna "B" tengo, en algunos caso la cantidad de segundos que "A" utilizo en una actividad determinada
En la columna "C" se encuentra una referencia horaria, respecto a en que momento se utilizo "B"
En la columna "D" poseo los mismos datos que en la "C" , solo que en otro formato ya que es una columna auxiliar que utilizo para otra hoja del mismo libro.
En la Columna "E" obtengo el horario exacto en el que se comenzo a utilizar el tiempo ("B"), por lo que cada vez que tengo datos en "B", también los tengo en "E" (datos múltiples)
En la columna "G" tengo el listado de legajos existentes

Lo que necesito hacer es que en la columna "H" me traiga el dato que se encuentra en "E" para cada fila de la columna "G", pero como el valor buscado se encuentra duplicado no puedo utilizar la función BUSCARV. A demás necesito que todos los datos que se correspondan con los de cada fila "G" (legajos) sea el menor de todos.
En respuesta a esto, me indicaste que podía utilizar la formula "=MIN(SI((A2:A10=B12)*(C2:C10)=0,"",(A2:A10=B12)*(C2:C10)))" (hiper vinculo a la consulta realizada en el foro) pero al acomodarla en mi libro de excel me da como resultado (#¡NUM!).
Se que este resultado lo podría obtener realizando simplemente una tabla dinámica, pero como los datos que se encuentran en "A:C" varían todos los días, debería estar siempre actualizando la misma, y como es un archivo que luego impartiré con un colega de trabajo no quiero utilizar tablas, ya que en archivos anteriores hemos tenido problemas con las mismas.
Te adjunto el archivo, espero haber sido lo suficientemente explicito como para poder obtener tu ayuda en este caso. Desde ya muchas gracias. A espera de una pronta respuesta, lo saludo Atte. Cesar

Jorge L. Dunkelman 26 septiembre, 2012 07:53  

César,
un comentario no es el lugar adecuado para este tipo de consultas (ya que no es de interés general ni está ligada al tema de la nota). Por favor fijate lo que pongo en el enlace Ayuda (en la parte superior de la plantilla).

Cesar 26 septiembre, 2012 22:32  

GRACIAS. Pense que una consulta sobre BUSCARV con valores repetido, en un foro cuyo tema es "Usar BUSCARV (Excel) en listas con valores repetidos", era una consulta ligada al tema de la nota. No obstante agradezco tu respuesta. Saludos

yurguenpt 10 octubre, 2012 07:24  

Hola!Tengo un problema, tengo una matriz que tiene en una columna el nombre de unos productos y en otra columna la cantidad de venta de cada uno, necesito hacer una funcion que busque el mayor valor de venta y que me indique a que producto se refiere.
Para ponerlo en tu ejemplo, una funcion que busque la orden de compra mayor y que me indique que esta corresponde a tuercas, pensaba hacerlo con muchos "si" pero es demasiado tedioso
Gracias !

Anónimo,  15 octubre, 2012 17:50  

Buenas tardes, mi consulta es saber lo siguiente y si esta bien aplicada en este caso la funcion BUSCARV: tengo una matriz con nros de patentes de camiones con sus horas de ingreso a la fabrica, los quiero encontrar en otra hoja el caso es que cuando las patentes se empiezan a repetir me trae siempre el primer valor, yo quiero que los tome segun la fecha de ingreso del camion, me podrias ayudar a resolverlo, agradecere tu ayuda gracias y saludos Claudio.

Jorge L. Dunkelman 15 octubre, 2012 19:24  

Lo más eficiente sería que usaras una tabla dinámica, resumiendo los valores con la función MAX. Otra posibilidad usar INDICE combinada con COINCIDIR, siendo el valor de búsqueda de COINCIDIR el resultado de la función MAX.

Jorge L. Dunkelman 15 octubre, 2012 21:08  

Estimado Anónimo (el de los camiones),
lo más fácil y eficiente es usar una tabla dinámica. Si no estás familiarizado con el tema, puedes leer las notas relevantes en el blog.

Anónimo,  22 octubre, 2012 16:11  

Hola Jorge,

Tengo un problema con la fórmula
=MAX((A2:A10=B12)*(C2:C10))
no sé si es mi excel 2010, pero al abrir tu archivo y sin tocar nada, se ve el valor correctamente (9,74), pero al situarme en la celda (B16) donde está esta fórmula y pulso Intro, vamos como si obligamos a excel a que ejecute de nuevo la fórmula, me aparece #¡VALOR!, ¿sabes a que se puede dar este error?

Un saludo.

Jorge L. Dunkelman 22 octubre, 2012 19:49  

Estimado,
se debe a que la fórmula es matricial. Es decir, se introduce pulsando simultáneamente Ctrl-Mayúsc.-Enter.

Kamui 18 noviembre, 2012 01:36  

Muy ilustrativo tu blog!
Aunque lo que propones aquí no se acomoda para mis necesidades particulares, espero que me puedas ayudar!

Yo uso BUSCARV para sacar un valor de una matriz en otra hoja de cálculo, es decir, yo ingreso un código "XXXX" y las fórmulas me devuelven los valores que en la otra hoja de cálculo corresponden a "XXXX" pero la cosa es que cuando los valores se repiten necesito los datos que están en esa instancia, no en la primera entonces me consulta sería:

¿No existe una forma de usar alguna fórmula que me permita arrastrar datos de la misma forma que BUSCARV lo hace, pero que vaya contando de tal forma que ignore el 1, luego el 2 y así sucesivamente?

Jorge L. Dunkelman 21 noviembre, 2012 18:19  

Kamui,
si es que entiendo tu consulta, podrías adaptar la fórmula que expongo en la nota. En lugar de usar una constante en "orden de aparación" tendrías que usar una variable. Por ejemplo, si el rango empieza en A2, FILA()-1 da el resultado 1; al arrastrar la fórmula a la celda A3, recibirías 2 y así sucesivamente.

Anónimo,  24 noviembre, 2012 17:47  

Hola Jorge

Excelente pagina, tengo un problema con la siguiente lista
Nombre calificación
Ana 9
Alberto 7
Dominick 9
Frida 8
Cuando consulte en otra hoja de Excel me regrese una lista con el siguiente orden alfabético
Nombre calificación
Ana 9
Dominick 9
Frida 8
Alberto 7

Me puedes ayudar como hacer el arreglo de las formulas, te lo agradecería bastante, que tengas un buen día.
Saludos

Alberto B.

Jorge L. Dunkelman 26 noviembre, 2012 18:01  

En la segunda lista, ¿Alberto 7 no tendría que aparecer inmediatamente después de Ana 9?
De todas maneras, podrías usar las fórmulas que muestro en esta nota y usar BUSCARV para extraer la calificación correspondiente al nombre.

Noelia 08 febrero, 2013 14:40  

Hola!

no termina de encajarme la fórmula max que planteas, algo estoy haciendo mal
Tengo un listado de artículos que se repiten año tras año y por tanto su precio es mayor. Necesito que el resultado de buscarv sea el correspondiente al año presente (más alto).
Mi duda es exactamente donde encajamos la funcion max dentro de buscarv?? he intentado usar la misma pauta que en otras formulas ligadas unas dentro de otras y no hay forma.

=buscarv(valor;martriz;resultado;ordenado)
=max(matriz,1(más alto)

cómo las anexo??
=buscarv(max(matriz,1)(valor....))?¿?¿
Agradezco muchísimo tu ayuda
Genial el blog
Saludos

Noelia 08 febrero, 2013 15:04  

... de nuevo,

creo que me he contestado a mí misma!
no se trata de cruzar ambas fórmulas cierto?
he conseguido lo que quería ordenando la lista de datos primero por el código cliente (esto es obligado por la formula buscarv) y luego por orden desdendiente de precio, de forma que al darme siempre el primer valor que haye, será el que quiero, el más actual.
Te lo comento por si es una solución factible, o poco correcta para lo que en realidad nos da Excel
Gracias de todos modos
Saludos

Jorge L. Dunkelman 08 febrero, 2013 18:57  

Hola Noelia,

gracias por los conceptos, me alegro que te guste el blog.
En cuanto a las fórmulas, las ingresas en forma matricial?
En lo que hace a BUSCARV la lista debe estar ordenado sólo si se usa búsqueda aproximada (el cuarto parámetro es 1 o ausente). Si se usa búsqueda exacta no hace falta ordenar la lista.

karl steve cortes rodriguez 15 febrero, 2013 04:51  

¿Como puedo encontrar datos inexistentes en una hoja de calculo?

Ejemplo:

Tengo una cédulas en mi base de datos en la hoja1
111111111
222222222
333333333

Y en la hoja2
Escribo la cedulas
222222222
444444444
(hay una que existe y otra no)

Quiero tener un celda que diga si hay numeros de cédula inexistenetes o todos los numeros de cédula coinciden

Con que formula lo hago ?

Jorge L. Dunkelman 15 febrero, 2013 07:41  

Fijate en la técnica que propongo en esta nota.

Anónimo,  18 febrero, 2013 21:14  

Estimado:

Tengo una Consulta con respecto a este Post.

¿Cómo podría buscar por dos parametros? Por ejemplo, si los tornillos tuvieran el mismo precio en varias ordenes de compra y quisiese saber en que ordenes tiene dicho precio.

Espero se entienda y de antemano muy agradecido por tu post

Anónimo,  01 marzo, 2013 23:32  

HOLA , NO SE SI ESTE USANDO LA FORMULA QUE DEBE DE SER =BUSCAR , TENGO 2 ARCHIVOS CON NOMBRES DE CLIENTES , PERO QUISIERA IDENTIFICAR SI EN LOS DOS ARCHIVOS TENGO AL MISMO CLIENTE,

SALUDOS

Jorge L. Dunkelman 02 marzo, 2013 19:43  

En el blog hay varias notas sobre el tema mostrando distintas técnica. Puedes hacer una búsqueda en el blog con la palabra "comparar" para ver las notas.
Y sin relación al tema, por favor, no hace falta ni hay motivo para escribir todo en mayúsculas (es como si estuvieras gritando).

Susi mellado 06 marzo, 2013 22:50  

tengo los siguientes resultados: xxxy, xxxxx y, xxxyxyx y una tabla que me dice si hay tres x seguidas ponme 1 si hay 5 seguidas ponme 2, como puedo buscar los datos de la tabla en los resultados ?

Gracias

Jorge L. Dunkelman 08 marzo, 2013 21:43  

Publicaré en breve una nota sobre el tema.

Anónimo,  10 abril, 2013 04:45  

nose si vendra al caso pero la formula no puedo replicarla en otra hoja o en otro libro me parece que hay un error con el corchete inicial

{=indice( etc)

no se que significara {= tiene alguna implicancia ya que anoto la misma formula en otra celda y no resulta

Jorge Dunkelman 10 abril, 2013 06:57  

Estimado, las fórmulas son matriciales y se introducen en la celda apretando simultáneamente Ctrl-Mayúsculas-Enter. Los corchetes no hay que escribirlos, Excel los agrega al introducir la fórmula en la forma indicada. Fijate en esta nota.

CARLOS SANTIAGO FLECHAS ALARCON 12 abril, 2013 19:08  

Hola Jorge buscando usted es lo mas parecido a lo que he querido.
Como modificaria la formula para que mis criterios de busqueda en (Celda B13) en vez de "Orden de aparicion" pueda yo meter el criterio "Orden de Compra".
Osea q mis filtros sean en primer lugar 1·Producto
2·Orden de Compra
= Precio

Jorge Dunkelman 13 abril, 2013 22:36  

Hola Carlos,

en tu caso sería más conveniente usar SUMAPRODUCTO. Siguiendo con el ejemplo de la nota. para encontrar el precio del tornillo en la orden de compra 30040, usamos esta fórmula:

=SUMAPRODUCTO((A2:A10="Tornillos")*(B2:B10=30040)*C2:C10)

Para hacer una fórmula más dinámica podrías poner el articulo a buscar en la celda E1, y el número de orden de compra en E2 y poner esta fórmula en E3

=SUMAPRODUCTO((A2:A10=E1)*(B2:B10=E2)*C2:C10)

Anónimo,  16 julio, 2013 02:54  

Hola,

Quiero sumar en una base de datos de factuas valores por rango de fechas, ya le metí la fórmula de sumar.si condicionando la suma a los meses según corresponda la factura, además quiero condicionar la celda de que me sume las facturas que ya fueron pagadas; es decir, me sume las facturas pagadas de acuerdo al mes que corresponda.
Qué hago?
Gracias

Jorge Dunkelman 16 julio, 2013 07:00  

En Excel 2007/2013 SUMAR.SI.CONJUNTO, en las versiones anteriores SUMAPRODUCTO. En el blog hay varias notas sobre operaciones con varios criterios.

Anónimo,  16 julio, 2013 17:50  

Hola

excelente la explicación, es justo lo que necesito, pero como puedo hacer que en la formula ={MAX((A2:A10=B12)*(C2:C10))} la celda B12 sea variable; es decir jalar la formula hacia abajo ya que tengo una lista de 500 materiales y quisiera saber el valor máximo de cada uno

Jorge Dunkelman 16 julio, 2013 18:06  

Para obtener los máximos de cada material te resutará más eficiente usar una tabla dinámica resumiendo los datos con la función MAX.

Leo,  11 octubre, 2013 19:46  

Lo que yo quiero es encontrar un dato de una matriz que se repite varias veces y jalar el dato como único, osea una sola vez, por favor alguien que me ayude (Ejemplo, supongamos que tengo una lista de artículos en la columna B y algunos de esos artículos se repiten varias veces yo solo quiero jalar una sola vez cada uno de esos artículos), me pueden escribir a landerscz@hotmail.com

Jorge Dunkelman 13 octubre, 2013 19:36  

Leo, la form más sencilla es usar Filtro Avanzado, como muestro en esta nota.
Hay otras técnicas quepuedes ver haciendo una búsqueda en mi blog con el valor "únicos".

Jorge Fonseca 08 noviembre, 2013 08:07  

hola Jorge muchas gracias por todo!!

yo tengo una duda y ojala me puedas ayudar, fijate que tengo los siguientes datos,

UNA BASE DE DATOS QUE SE ME VA ACTUALIZANDO POR SEMANAS (1-52) EN ELLA HAY PEDIDOS CON LOS DETALLES DE LOS MISMOS (CLIENTE, NO DE PEDIDO, FECHA ETC).
LO QUE QUIERO BUSCAR ES QUE PARA DETERMINADA SEMANA POR EJEMPLO SEMANA 44, AL COLOCAR LA CLAVE DEL CLIENTE ME BUSQUE EL NUMERO DE PEDIDO, PERO QUE CORRESPONDA A DICHA SEMANA YA QUE CON BUSCARV ME APARECE EL PRIMER DATO QUE PUEDE SER DE LA PRIMER SEMANA.

COMO PODRIA HACERLE PARA OBETENER ESTE DATO?

Jorge Dunkelman 08 noviembre, 2013 10:33  

La forma más fácil es con tablas dinámicas.

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP