Obtener valores de la última fila de una hoja en Google Spreadsheets

Hasta hace un tiempo quería hacer sistemas para todo, programarlos de cero, porque normalmente al estar hechos a la medida para situaciones particulares, bien creados son fáciles de mantener. Por eso y porque puedo, el asunto es que hay cosas que de pronto solo requieren ser graficadas y ya, sin más pretensiones que dar un resumen de datos. Aquí vamos a explicar varias cosas, pero entre ellas, como obtener un último dato de una base de datos (una hoja de cálculo en este caso), sin importar si es modificado.

Pasa que aquí en el archivo de ejemplo, estoy cargando datos de un servidor por medio de la función =importdata() de Google Spreadsheets, que básicamente es un archivo csv que genero en un servidor y se lo sirve a la hoja de cálculo, así, son datos dinámicos que se van generando al vuelo, según la fuente.

Entonces para mi ejemplo, usaremos datos de producción de tomates, el documento tiene dos hojas, anual que es un resumen y producción, que es lo que obtengo en crudo del servidor y con una estructura como la siguiente:

Con datos como la fecha, la cantidad de cajas de tomates, el número de cortadores de los tomates, el año, el mes y el año-mes, esos datos los uso para otras cosas pero pueden ser nomás con la fecha. Ahora, el asunto es que como son datos "vivos" que se están cargando del servidor, no tengo una fila fija para saber cual es el último dato, así entonces, entramos en el ejemplo:

Ahí, con la función indice, filter, no, filas, etc... obtengo el último valor que no esté en blanco de mi tabla de datos (llamada producción), en este caso fue el número 148. La función es:

=INDICE( FILTER( 'producción'!B:B , NO( ESBLANCO( 'producción'!B:B ) ) ) , FILAS( FILTER( 'producción'!B:B , NO( ESBLANCO( 'producción'!B:B ) ) ) ) )

Ahí, en la hoja "anual", hago referencia a los datos de la hoja "producción" que es la que obtengo del servidor y obtengo el último dato (fila) de la columna B. Con eso tengo el número de cajas producidas el último día reportado. Para obtener la fecha, como la tengo en la columna A, sería la formula algo como esto:

=TEXTO(INDICE( FILTER( 'producción'!A:A , NO( ESBLANCO( 'producción'!A:A ) ) ) , FILAS( FILTER( 'producción'!A:A , NO( ESBLANCO( 'producción'!A:A ) ) ) ) ),"dd mmmm YYYYY")

Eso es todo, de tal forma que en mi resumen (hoja anual) ya tengo la última fecha y número de cajas de tomate, lindo.

Ahora podemos hacer el resumen anual, en este caso tengo datos de 3 años (el último inconcluso), así que las fórmulas también tendrán eso en cuenta. Para poner los distintos años, es con la fórmula =UNIQUE()

Como tenemos una fila con el año, la D de la hoja "producción" entonces es fácil, obtiene los distintos valores y ahí los lista, 2019, 2020 y 2021 sin concluir. La siguiente columna que me interesa es sumar todas las cajas producidas en ese año, entonces ahí usamos la fórmula =SUMAR.SI()

 

Lo que hacemos es, cuando la columna de año coincida con el año, entonces sume toda fila de las cajas (la columna B). Con eso tenemos el total de ese año.

Por último, queremos saber cuantos días están reportados para sacar los promedios, útil por si hay días que no se reportaron o en el caso de 2021 que no ha acabado en este reporte y son menos días. Entonces usamos la función =CONTAR.SI()

De esa forma, contaremos cada fila que coincida con el año, según el reporte de producción.

Y eso es todo, al ser datos que se alimentan por otros medios (algún otro sistema conectado), las hojas de cálculo de Google pueden automatizar ciertos resúmenes ejecutivos o gerenciales, donde de un vistazo veas la información relevante, sin estar viendo dato por dato.

+ fotos / videos

Almacenado en hojas de cálculo, spreadsheets, google drive

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Obtener valores de la última fila de una hoja en Google Spreadsheets

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado jueves 23 de diciembre de 2021, 13:11