miércoles, 24 de febrero de 2010

Ejemplo BDMAX y BDMIN en Excel.

Como continuación a una entrada anterior, en la que un lector planteba esta cuestión:
...tengo en A1 a A10 rangos con fecha y hora de las llamadas hechas y en B1 a B10 el nombre del agente; y lo que debo de hacer es obtener el mínimo y el máximo registro de cada agente. ...

Lo resolveré esta vez empleando funciones para Base de datos, y en concreto las funciones:
BDMIN(base de datos; campo; rango de criterios)
BDMAX(base de datos; campo; rango de criterios)
Aplicaremos estas fórmulas sobre nuestro listado:


Aprovecharemos de nuestro ejemplo anterior que teníamos una celda validada en E3, para definirlos como 'Rango de criterios' en nuestras funciones de Base de datos.


Interpretaré las funciones dadas.
Para obtener el mínimo valor:
=BDMIN($A$1:$B$11;"Hora";$E$2:$E$3)
preguntamos a Excel de la Base de datos definida por el Rango $A$1:$B$11, cuál es el valor mínimo del campo 'Hora', para aquellos registros que cumplan los criterios dados en el rango $E$2:$E$3, i.e., aquellos registros en los que para el campo 'Agente' tengamos elementos igual al valor de E3.
De igual forma, para el valor máximo:
=BDMAX($A$1:$B$11;"Hora";$E$2:$E$3)
de nuestra Base de datos obtendremos el valor máximo para los registros en los que coincida el elemento del campo 'Agente' ccon el valor de E3.

Es importante que recordemos cómo teníamos que configurar o determinar los criterios en este tipo de funciones para base de datos.

42 comentarios:

  1. Excelente y claro ejemplo de como usar DBMIN y DBMAX...

    10 mil puntos bro.

    ResponderEliminar
  2. hola, ¿cómo podríamos identificar los 3 primeros, no sólo el máximo? ejemplo... tabla con tiempos de una carrera pero cada corredor es de una categoría, los tres primeros veteranos, cadetes... etc. etc. sin utilizar tablas dinámicas.
    saludos,

    ResponderEliminar
  3. Hola,
    puedes ver una solución en
    http://excelforo.blogspot.com/2011/03/obtener-los-tres-mejores-tiempos-segun.html
    la clave es emplear correctamente la función K.ESIMO.MAYOR.
    Espero te sirva.
    Slds

    ResponderEliminar
  4. gracias! brillante!
    me ha servido muchíiiiiiiisimo!!!

    saludos,

    ResponderEliminar
  5. =MIN(SI((B2:B11=D2)+(B2:B11=D2)+(B2:B11=D2)+(B2:B11=D2),A2:A11))
    =MAX(SI((B2:B11=D2)+(B2:B11=D2)+(B2:B11=D2)+(B2:B11=D2),A2:A11))

    D2=lista con nombres(aaaaa,bbbbb,ccccc,ddddd)

    Aqui te presento otra variante

    ResponderEliminar
  6. =MIN(SI(B2:B11=E3,A2:A11))....matricial
    =MIN(SI(B2:B11=E3,A2:A11))....matricial

    E3=lista con nombres....validacion

    Me disculpo de antemano por la anterior publicacion hubo errores

    ResponderEliminar
  7. Muchas gracias por el aporte... siempre son bienvenidos
    lo probaré.
    Slds

    ResponderEliminar
  8. Que pasa si mis base de datos, donde debe obtener el maximo valor son fechas, no me funcio, me pueden apoyar

    ResponderEliminar
    Respuestas
    1. Hola que tal, un gusto saludarte también.
      debería fncionarte de igual forma que el ejemplo expuesto, ya que al igal que las horas ls fechas sonnúmeros, y aplican las mismas norms de MAX o MIN que con cualquier otro valor.
      Revisa que estás aplicando correctamente los argumentos de las funciones.
      También puedes intentar el formato matricial expuesto en un comentario más arriba de este.

      Slds cordiales

      Eliminar
  9. hola ; como haría si tuviese varios nombre de campo? por decir quiero sacar el valor máximo de ventas de un vendedor especifico; la tabla tiene un campo para el vendedor y el resto de campos son los meses; yo quiero el valor del mes que mas vendió; me podrían ayudar

    ResponderEliminar
    Respuestas
    1. Hola Bryan,
      si únicamente quieres obtener el valor máximo de ventas (entre los diferentes campos de meses), solo aplica la función MAX.
      Por ejemplo, en A2 el nombre del vendedor y en B2:M2 los doce meses, por tanto en N2 puedes añadir:
      =MAX(B2:M2)
      con lo que obtendrías el valor del mes que más vendió.

      Espero te sirva.
      Slds

      Eliminar
  10. hola alguien podría ayudarme con esto:

    Tengo una serie de datos de la siguiente manera
    V0010001
    V0010003
    V0010005
    V0010002
    V0010004

    Los primero 4 carcateres de cada uno de los numeros alfanumericos corresponden a una clave con la que identifico de donde provienen el dato y los ultimos 4 caracteres corresponden a un numero consecutivo.

    Lo que necesito es encontrar el MAXIMO de este numero consecutivo dentro de mi serie de datos. que en este ejemplo seria el 0005

    ResponderEliminar
    Respuestas
    1. Hola Laura,
      una forma sería aplicar la siguiente función matricial
      =MAX(VALOR(DERECHA(A1:A20;4)))
      recuerda valida presionando Ctrl+Mayusc+Enter, en vez de solo Enter

      Saludos

      Eliminar
  11. Necesito ayuda para construir el criterio, ya que tengo fija la columna A1 con el nombre del campo, pero de a2 a a7 tengo los valores que quiero consultar. De manera que en A1 "Fecha_Recepción" en
    A2 Facturas_Alfa,
    A3 Facturas_Beta, ...
    En una base de datos tengo facturas_alfa con varias fechas de recepción, lo mismo para facturas_beta y así. Quiero consultar la máxima fecha de recepción de la columna Facturas_alfa y en renglón siguiente Facturas_beta, pero se complica el criterio en A3.
    =bd(base,campo,a1:a3)

    ResponderEliminar
    Respuestas
    1. Hola, que tal estás?.. un placer saludarte igualmente.
      Podrías probar aplicando la función MAX sobre el rango de celdas de Fras_Alfa, _Beta, etc... quizá sea suficiente con eso.

      Saludos cordiales

      Eliminar
  12. Tengo 2 bases de datos, en la segunda quiero jalar el cósto más elevado de la primera, como le hago para con una formula tener el costo máximo de todos los criterios?

    ResponderEliminar
  13. X Y x
    a 1 a Max ?
    b 2 b Max ?
    c 3 c Max ?
    a 4
    b 5
    c 6
    a 7
    b 8
    c 9
    a 10
    b 11
    c 12
    a 13
    b 14
    c 15
    a 16
    b 17

    ResponderEliminar
    Respuestas
    1. Hola Carlos,
      yo utilizaría una matricial:
      =MAX(SI($A$1:$A$17=C1;$B$1:$B$17))
      siendo A1:A17 donde aparecen las letras, B1:B17 los valores, y C1 la letra cuyo máximo quieres obtener.

      recuerda validarla presionando Ctrl+mayusc+Enter

      Saludos

      Eliminar
  14. Hola! Tengo en una hoja legajos y en otra hoja legajos fechas y códigos. En la hoja 1 necesito una fórmula con condiciones:
    que si en la hoja dos se repite un legajo de la hoja 1 y tiene más de un código igual traiga la fecha más antigua de las filas que se corresponden con el legajo y código. Ejemplo: si en la hoja 2 columna A fila 2 y en la col A fila 3 esta el legajo 50, en la col B fila 2 esta la fecha 01/11/2015 y en la col B fila 3 la fecha 01/09/2015, en la col C fila 2 esta el código T1 y en la col C fila 3 se repite el código T1 que la formula que hago en la hoja 1 devuelva la fecha 01/09/2015

    ResponderEliminar
    Respuestas
    1. Hola,
      emplea la misma matricial comentado a Carlos Medina (justo el comentario anterior).. solo que trabajando entre hojas.
      Saludos

      Eliminar
  15. Hola! No me da, el tema es q tengo una condición que coincidan los legajos, otra que busque el codigo en la fila donde esta el legajo, si hay más de un legajo con el mismo código que busque la fecha más antigua de las filas esas.

    10 01/01/2015 T8
    50 03/01/2015 G9
    50 05/01/2015 G9

    En este caso necesito una fórmula que busque el legajo 50 en toda la columna "A" y devuelva la fecha más antigua de un código y si se repite el legajo con ese código que traiga la fecha más antigua, en el ejemplo sería 03/01/2015 perdón pero hace mucho que intentó y no encuentro la formula indicada.

    ResponderEliminar
  16. Ah me olvidaba! Si cambia algún dató la fecha de cambiar también.

    ResponderEliminar
    Respuestas
    1. Hola,
      tal como te indicaba la estructura de la fórmula es la misma del comentario de Carlos Medina
      supongamos el valor 50 en la celda E2 y en F2 insertamos:
      =MIN(SI($A$1:$A$3=E2;$B$1:$B$3))
      y validamos presionando Ctrl+Mayusc+Enter
      Saludos

      Eliminar
  17. Hola, quería saber si hay alguna forma de calcular el minimo condicionado a más de una restricción, para este caso igual a un valor específicio y a la vez distinto de cero. muchas gracias!

    ResponderEliminar
    Respuestas
    1. Hola,
      podrías aplicar el método matricial expuesto en el comentario anterior, pero añadiendo tantas condiciones como quisieras, por ejemplo:
      =MIN(SI($A$1:$A$3=E2;SI($A$1:$A$3<>0;$B$1:$B$3)))
      y validamos presionando Ctrl+Mayusc+Enter

      Saludos

      Eliminar
  18. Hola! uso la formula =MIN(IF(Sheet2!A:A=Sheet1!A,IF(Sheet2!K:K=Sheet1!Q1,Sheet2!E:E)))
    y me da cero... y en realidad necesito que valide todos los datos y traiga la fecha más antigua de las filas adonde se encuentren los datos validados..

    ResponderEliminar
    Respuestas
    1. Hola,
      entiendo has incluido
      =MIN(IF(Sheet2!A:A=Sheet1!A1,IF(Sheet2!K:K=Sheet1!Q1,Sheet2!E:E)))
      y has validado matricialmente como indicaba.. y a pesar de eso devuelve cero..
      ¿Tienes celdas vacías en esos rangos??

      Saludos

      Eliminar
  19. Hola! No, no están vacías, pero hay columnas entre medio de las columnas que uso para la formula, será eso? el Tema es que no puedo quitarlas o reorganizarlas ya que es info que se necesita..habrá otra solución ?

    ResponderEliminar
    Respuestas
    1. Hola,
      puedes enviarme el fichero a
      excelforo@gmail.com
      Saludos

      Eliminar
  20. Hola! Tengo en una hoja un listado de ventas, discriminado por fechas y productos, y en otra un tablero de control que me pide hallar la cantidad máxima vendida de un producto entre determinadas fechas (seleccionando el producto de una lista desplegable e ingresando las fechas de forma manual). Mi problema es que tengo ya fijado cuales deben ser las celdas en las que se incluyen los criterios, tengo 3 celdas con los "nombres" de dichos criterios, y a su derecha la celda para ingresar el valor de cada una, no debajo como se supone que debe ser, por lo que al aplicar la función BDMAX me da error. ¿Cómo puedo solucionarlo?

    ResponderEliminar
    Respuestas
    1. Hola Karina,
      quizá lo más directo en este caso sea usar una función matricial con las condiciones necesarias, que serían la del nombre del producto, y las dos del rango de fechas.
      En la celda donde necesites ese valor máximo condicionado:
      =MAX((rango_pdtos=Pdto)*(rango_fechas>=FIni)*(rango_fechas<=FFin)*rango_cantidades)
      recuerda validarla presionando Ctrl+Mayusc+Enter
      Saludos

      Eliminar
  21. Hola buen día, tengo la Siguiente situación que me esta volviendo loco:
    A B C D E F G
    1 2 3 4 5 6 7
    1 2005 2006 2007
    2 Cve. Valor Lugar Valor Lugar Valor Lugar
    3 00 66.52 68.59 67.41
    4 01 66.47 20 78.41 30 71.96 27
    5 02 66.14 19 62.37 9 67.54 21
    6 03 56.58 5 57.81 5 54.34 5

    Y tengo una sección de Salida, donde se busca que escojan el año, y de ai entrege:
    Año: (lista desplegable)
    Value= si(Año=2005,2,Si(año=2006,4, Si(año=2007,6,””)))
    Rank= si(Año=2005,3,Si(año=2006,5, Si(año=2007,7,””)))
    Valor de Cve. 02 : =Buscarv(“02”,A3:G6,Value,0)
    Lugar de Cve. 02: =Buscarv(“02”,A3:G6,Rank,0)
    Valor de Cve. 00: =Buscarv(“00”,A3:G6,Value,0)
    Cve. De Mejor lugar: ¿?
    Valor de Mejor lugar:¿?
    Mi problema está en cómo hacer que me traiga la clave con el mejor lugar respecto al Año que pido, asi como su valor.

    ¿Alguna sugerencia?

    ResponderEliminar
    Respuestas
    1. Hola,
      depende de la versión que tengas podrías emplear una función condicional u otra...
      Un caso te serviría siempre será una matricial..
      En tu caso me es complicado interpretar tu explicación, pero podría ser algo así:
      =MAX(SI(años=Año_elegido;rango_a_verificar))
      (ejecutada matricialmente),
      así obtendrías el mayor valor asociado a un año..

      Espero te oriente
      Slds

      Eliminar
  22. Utilizo 2013, si creo que me podría ser útil de tambien de esa manera, si tuviera solo fechas anuales, ayer después de escribir aquí (bueno unas cuantas horas de mas), opte por agregar aparte un tabulado con:

    D3=MAX(Hist21[2005I])
    =INDICE(Hist21[Estado],COINCIDIR(D3,Hist21[2005I],FALSO),1)

    y de ello traer la información a la tabla resumen, mi dilema principal esta en convertir los trimestres y semestres en fecha, para que en conjunto con los datos anuales tengan una "base" fecha de la cual buscar el valor mas cercano a la fecha que esté buscando el usuario.

    si tienes algo de tiempo me gustaría que vieras el archivo para que pudieras asesorarme.

    ResponderEliminar
    Respuestas
    1. Si quieres puedes enviarme el fichero a
      excelforo@gmail.com
      Cuando tenga algo de tiempo lo podría revisar.
      Slds

      Eliminar
  23. tengo una planilla de las cuales tengo que obtener la fecha del ultimo anticipo, estoy media trabada.
    Hoja 1 - Totales tengo
    Legajo -LOB- Nombre - Saldo real -Tickets Pendientes - Saldo - Ultimo anticipo
    HOJA 2 CARGA DE DATOS
    N° de Legajo - Nombre Empleado - Tipo de comprobante - N° importe - Fecha

    de lo que se carga en la hoja 2 me sale un resumen en la hoja 1 , pero no logro dilucidar que formula correcta debo ingresar para que me traiga la fecha del ultimo anticipo

    ResponderEliminar
    Respuestas
    1. Hola Sara,
      qué tal estás?, un placer saludarte igualmente
      Quizá este post te pueda orientar
      http://excelforo.blogspot.com.es/2011/10/encontrar-fechas-con-matriciales.html
      Saludos cordiales

      Eliminar
  24. Hola!
    Tengo una hoja con muchas condiciones, entre ellas rangos, por ejemplo, salario>1500 salario<2500, estoy intentando usar funciones BD para calcular los máximos y mínimos y así evitar meter las condiciones a mano (usando max(si( matricial), pero veo que al usar BDMAX y seleccionar los criterios no los une en 1500<salario<2500 si no que elige todos los datos menores a 2500 (incluyendo los menores de 1500) y mayores de 1500 (incluyendo los mayores de 2500), ¿hay alguna sintaxis que en mi tabla de criterios me permita indicar que es un rango y por tanto se deben cumplir las dos condiciones? Muchas gracias! Saludos

    ResponderEliminar
    Respuestas
    1. Hola Lucia,
      tienes que construir en el rango de criterios dos columnas de salario, en la primera añadir la condición >1500 y en la segunda Y EN LA MISMA FILA <2500
      Espero haberme explicado
      Saludos

      Eliminar
  25. Si!! Muchas gracias, funcionó perfecto.

    ResponderEliminar
  26. Hola, que interesante el blog, tengo la siguiente situación y no logro sacar la solución.

    COMPAÑIA - CODIGO
    A 1
    B 1
    A 2
    C 1
    B 3

    La idea es que el código sea único y correlativo para cada compañía; necesito obtener el ultimo de cada compañía para generar el codigo siguiente que debiera ser el ultimo + 1, me pueden ayudar?
    Muchas gracias, saludos.

    ResponderEliminar
    Respuestas
    1. Hola Johanna,
      en la columna B del código, en la primera fila de datos (fila 2) después del encabezado escribe:
      =CONTAR.SI($A$2:A2;$A2)
      y arrastra hacía abajo... la siguiente vez que añadas una compañía se autonumerará..
      Saludos

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.