martes, 31 de agosto de 2010

Buscar último valor en un rango de celdas.

Tras la vuelta de las vacaciones de verano, empezaré a ponerme al día con aquellos correos recibidos en este tiempo.
En un correo solicitaban mi colaboración para encontrar, en Excel 2003, la manera de encontrar en un rango de celdas cual era el último valor introducido; sabiendo que algunas de las celdas del rango podrían estar vacias:

...Tengo la siguiente situación en una hoja excel 2003.
En la columna A , tengo el nombre de las filas.
Las siguientes columnas están identificadas por Fechas.
Según sea la fecha las Filas tienen datos pero no en todas las columnas, sólo en algunas.
Necesito encontrar una fórmula que me permita hacer un resumen con la última fecha y dato que se ingresó...


Veamos un ejemplo de la tabla propuesta:


analicemos la estructura planteada; diponemos de una columna (columna A) con una lista de 'Lotes' y unas columnas (columnas B a BT) con 'Fechas'.

Nuestro objetivo es lograr diponer en una tabla resumen para cada concepto 'Lote' cuál es el último valor introducido y a la vez a qué 'Fecha' corresponde dicho valor. En una tabla similar a esta:


Para alcanzar la meta perseguida deberemos emplear funciones matriciales, junto a la funcion INDICE.

Para determinar en la tabla resumen las últimas fechas con algún valor aplicaremos la siguiente función matricial (Ctrl+Mayus+enter) en la celda BV11, para luego copiar hacia abajo:
{=INDICE($A$10:$BT$10;1;MAX(SI($B11:$BT11<>0;COLUMNA($B11:$BT11);0)))}
intento explicarla...

con el condicional SI($B11:$BT11<>0;COLUMNA($B11:$BT11);0) obtendríamos 'hipotéticamente' todas las columnas con algún valor, en concreto su número; fijémonos que es una matricial!!!; al aplicar sobre este ficticio listado de números de columnas con valor la función MAX obtengo la última columna con valor. Esto era lo más complicado, ahora sólo nos queda aprovechar ese número 'mágico', para conseguir la fecha a la que pertenece aquel valor; para lo que emplearé la función INDICE (ya vista en varios ejemplos anteriores).
Al anidar todo lo anterior en esta función INDICE sobre el rango $A$10:$BT$10, esto es, el rango de las 'Fechas' resuelvo el problema.

De igual forma para visualizar el último valor, con la función matricial
{=INDICE($A11:$BT11;1;MAX(SI($B11:$BT11<>0;COLUMNA($B11:$BT11);0)))}
sobre cada uno de los conceptos 'Lote'.
La explicación es idéntica a la anterior.

Logramos nuestra tabla resumen:

15 comentarios:

  1. En un mundo tan competitivo, las personas tendemos a dejar de compartir nuestros conocimientos.
    Te doy las gracias, porque en cada respuesta que entregas, nos das una lección que la competencia parte por compartir.

    Slds - Roberto

    ResponderEliminar
  2. Como se puede descargar este archivo?

    ResponderEliminar
  3. Hola!!
    En esta entrada no quedó colgado el archivo con el ejemplo, si lo necesitas envíame un correo a:
    excelforo@gmail.com
    Un saludo

    ResponderEliminar
  4. Hola ExcelForo,
    Una consulta como puedo hacer que las fórmulas de los últimos valores de las celdas (BV11:BV20 y BW11:BW20, quiero trasladarla a una hoja nueva con el nombre de la hoja "Datos".

    Gracias
    saludos

    ResponderEliminar
    Respuestas
    1. Hola,
      no acabo de entender si quieres copiar todo el rango o sólo las últimas filas de esos rangos (BV11:BV20 y BW11:BW20); copiar sólo una parte de una fórmula matricial es imposible; asi que si quieres replicar esa fórmula matricial en otro lugar, en tu caso otra hoja, tendrías que entrar dentro de la barra de fórmulas de esa matriz, y copiar el contenido, el texto de la fórmula, para luego pegarlo en la Hoja 'Datos' de la que hablas... aunque tendrás que tener cuidado de realizar los cambios oportunos en las referencias de la fórmula.
      Un saluod

      Eliminar
  5. Hola,
    Tengo un problema similar, aunque algo màs complicado:
    Tengo una tabla en la que copio, en grupos de 3 columnas, los datos de un documento, y necesito una tabla resumen donde aparezcan el ùltimo grupo de 3 ingresado. Ejemplo

    Docu-Fecha-Estado
    015-15/05/2012-1

    Asì tengo alrededor de 24 columnas (representando 8 documentos) ¿còmo hago para que en la tabla resumen me aparezca el ùltimo valor?

    Gracias!
    Nt

    ResponderEliminar
    Respuestas
    1. Hola Nt,
      por lo que comentas, parece que la idea es la misma que la detallada en la entrada. Al fin y al cabo la última fecha será, esté donde esté, la fecha mayor. Por lo que localizar el documento (esas tres columnas) no es el problema.
      En esta entrada
      http://excelforo.blogspot.com.es/2012/10/busqueda-matricial-por-triangulacion.html
      Se explica como localizar una posición de una celda, asi que una vez tenga la fecha localizada, posicionada con su dirección, podrás obtener la celda de su izquierda y derecha (Docu y Estado).
      Espero te haya orientado en la solución.
      Slds
      P.D.: si tienes problemas envíame el fichero a
      excelforo@gmail.com

      Eliminar
  6. Hola buen dia requiero de su ayuda, tengo una lista la cual contiene celdas en blanco, requiero buscar el ultimo valor que coincide con un criterio

    A B
    2012-25
    2012-15 12/12/2012
    2012-25 15/12/2011

    Necesito que me regrese del 2012-25 la fecha de 15/12/2011

    ResponderEliminar
    Respuestas
    1. Hola,
      entiendo que por último te refieres a la fecha última de la coincidencia de 2012-25.
      Si es así, la fórmula matricial sería:
      =MAX(SI(A:A="2012-25";B:B))
      recuerda que se debe validar presionando Ctrl+mayusc+Enter (y no sólo Enter).
      Slds

      Eliminar
  7. CUANDO USO ESTA FORMULA TODO BIEN {=INDICE($A11:$BT11;1;MAX(SI($B11:$BT11<>0;COLUMNA($B11:$BT11);0)))}, PERO CUANDO CAMBIO EL RANGO {=INDICE($B11:$BT11;1;MAX(SI($B11:$BT11<>0;COLUMNA($B11:$BT11);0)))}, YA NO FUNCIONA POR QUE??? SOLO E CAMBIADO LA PRIMERA $A11 POR $B11

    ResponderEliminar
    Respuestas
    1. Hola que tal, como estás?? encantado de saludarte igualmente.
      Por favor, evita escribir en mayúsculas... es como si gritaras.
      con la matricial MAX(...) obtienes la última columna con dato en la fila 11, columna real, contando desde A, por eso sólo te funciona correctamente cuando pides que te devuelva el dato del vector A11:BT11
      Ya que si cambias A11:BT11 por B11:BT11 siempre te devolverá el valor de una columna a la derecha del último dato.. o sea de una celda vacía.
      Un cordial saludo

      Eliminar
  8. Hola, una consulta:
    Tengo una hoja con las ventas de productos. En esta hoja tengo fecha de venta y codigo de producto. Lo que necesito es poder incluir el precio de venta. Tengo otra hoja con el listado de los precios, pero de la siguiente forma: Codigo de producto, precio de venta y rango de fecha en que estuvo vigente. Como puedo relacionar la fecha de venta con el rango de fecha y vigente y que asi me traiga el precio de ventas correcto

    ResponderEliminar
    Respuestas
    1. Hola Lauralora,
      tendría que ver la distribución de la segunda tabla(CodPdto, PrecioVenta, Rango Fecha)... es importante para aplicar una u otra fórmula.
      Podría ser empleando la función SUMAR.SI.CONJUNTO en la primera tabla para recuperar el precio de la segunda... pero mejor envíame el fichero a
      excelforo@gmail.com

      Un saludo

      Eliminar
  9. tengo una consulta, ingreso informacion a un cuadro con un numero de guia y la fecha!!, pero quiero en una nueva hoja hacer un buscardor en el cual quiro que salga la ultima guia ingresada y a lado la fecha!! cuando ha sido ingresada!! solo necesito un codigo porfavor ayudenme

    ResponderEliminar
    Respuestas
    1. Hola Karlo,
      un placer saludarte igualmente.
      Entiendo te refieres a la última guía ingresada, esto es, a la última del listado que corresponde con la última fecha...
      Si esa así, este post te puede orientar:
      http://excelforo.blogspot.com.es/2015/09/encontrar-la-ultima-fila-o-columna-con.html

      Slds

      Eliminar

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