La función SPARKLINE() en la hoja de cálculo de Google Drive: insertar gráficas en una celda

Si bien la hoja de cálculo de Google Drive, al igual que Excel o que LibreOffice Calc, nos aporta una serie de cómodas herramientas para la creación de gráficos también disponemos de una función que nos permite crear un gráfico dentro de una celda. Dicha fución se llama SPARKLINE().

Ejemplo con los cuatro tipos de gráficos disponibles.

Esta función recibe como primer parámetro el rango de celdas del que queremos recoger los valores. Opcionalmente puede recibir un array de valores como parámetros opcionales. Estas opciones serían pares de valores, irían encerradas entre llaves, separadas del rango por un punto y coma. La separación entre pares se marcaría con un punto y coma, y dentro de cada par con el carácter de la barra \. Debajo te dejo un ejemplo porque explicado así es un lío:

=SPARKLINE(C1:C25,{"charttype"\"bar";"max"\50;"empty"\"zero"})

El parámetro “charttype” indicaría el tipo de gráfico y puede tener los siguientes valores:

  • line: es el valor por defecto, el que tomasi no se especifica ninguno, genera un gráfico de líneas.
  • bar: genera un gráfico de barras apiladas.
  • column: genera un gráfico de columnas
  • winloss: es un gráfico de barras pero que solo representa si el valor es positivo o negativo.

En la imagen de arriba podéis ver cómo se visualizarían los cuatro. Para cada tipo de gráficos tienes después una serie de opciones, que puedes consultar en la documentación oficial de Google.

La función DETECTLANGUAGE() en la hoja de cálculo de Google Drive

Si no hace mucho veíamos cómo usar la función GOOGLETRANSLATE() para traducir el texto en una celda de una hoja de cálculo de Google Drive tenemos una opción similar: detectar el idioma de una celda.

Para eso nos serviremos de la función DETECTLANGUAGE(), que recibe como parámetro una cadena de texto y devuelve el código del idioma que corresponda. Tal que así:

=DETECTLANGUAGE(“Olá, bom dia”) por ejemplo nos devolvería el código “PT” de portugués.

Importar datos de mercados bursátiles en una hoja de cálculo de Google Drive con la función GOOGLEFINANCE

Ayer veíamos cómo usar la función GOOGLETRANSLATE() en una hoja de cálculo de Google Drive. Hoy vamos con otra función curiosa que nos permite usar otro servicio de Google: la función GOOGLEFINANCE().

La función GOOGLEFINANCE() recibe cinco parámetros, aunque solo es obligatorio el primero que sería el código del valor que queremos consultar. Tras eso definiríamos el atributo que queremos mostrar, una fecha de inicio para recuperar los datos históricos, una fecha de fin o número de días y finalmente si queremos ver el intervalo diario o semanal. Todos estos valores deben ser cadenas de texto entre comillas o referencias a celdas con texto. Si invocamos la función mandando solo el código veríamos el precio de dicha valor en tiempo real (si el mercado en el que cotiza lo permite, pues no hay soporte para todos los mercados).

El parámetro opcional con el atributo que queremos mostrar permite varias opciones, según consultemos datos históricos, en tiempo real o de fondos de inversión. Si no se especifica parámetro el valor por defecto es “price“. Si se especifica un rango de fechas entonces este parámetro es obligatorio.

Si se especifican parámetros de fecha, la solicitud se considera histórica y solo se admiten atributos históricos . Cuando trabajamos con datos históricos los valores que podemos mandar como atributo son los siguientes:

  • open: Es el precio de apertura en la fecha o el rango definidos.
  • close: Es el precio al cierre en la fecha o el rango definidos.
  • high: Es el precio máximo durante la fecha o el rango definidos.
  • low: Es el precio mínimo durante la fecha o el rango definidos.
  • volume: Es el volumen de mercado en la fecha o el rango definidos.
  • all: Sacaría todos los anteriores.

Aquí un ejemplo donde consultamos la cotización de Microsoft en el índice NASDAQ durante el primer trimestre de 2019, usando la función con estos parámetros: =GOOGLEFINANCE(“MSFT”;”all”;”01/01/2019″;”01/04/2019″;”WEEKLY”)

El resultado que nos daría sería el siguiente:


=GOOGLEFINANCE(“MSFT”;”all”;”01/01/2019″;”01/04/2019″;”WEEKLY”)

Los resultados en tiempo real se muestran como un valor en una única celda, y no todos los datos están disponibles para todos los símbolos. Para valores en tiempo real los posibles atributos a visualizar son los siguientes:

  • price: Es la cotización en tiempo real, con un retraso de hasta 20 minutos. Si no se especifica un atributo este es el valor que se tomará por defecto.
  • priceopen: Es el precio a la hora de apertura del mercado.
  • high: Es el precio máximo del día, hasta la hora actual.
  • low: Es el precio mínimo del día, hasta la hora actual.
  • volume: Es el volumen de transacciones del día actual.
  • marketcap: Es la capitalización del valor en el mercado.
  • tradetime: Es la hora de la última transacción.
  • datedelay: Es el retraso de los datos respecto de los datos en tiempo real.
  • volumeavg: Es el volumen medio diario de transacciones.
  • pe: Sería la relación entre precio y beneficio.
  • eps: Es la ganancias por acción.
  • hight52: Es el precio máximo en las últimas 52 semanas.
  • low52: Es el precio mínimo en en las últimas 52 semanas.
  • change: Es la variación del precio desde el cierre del día de mercado anterior.
  • beta: Se trata de el valor beta.
  • changepct: Es la variación porcentual del precio desde el cierre del día de mercado anterior.
  • closeyest: Es el precio al cierre del día anterior.
  • shares: Es el número de acciones emitidas.
  • currency: Indica la divisa en la cual se expresa el precio del valor.

Y para fondos de inversión los valores que podríamos usar serían:

  • closeyest: Es el precio al cierre del día anterior.
  • date: Es la fecha de comunicación del valor neto del activo.
  • returnytd: Es el retorno obtenido durante el año hasta la fecha.
  • netassets: Son los activos netos.
  • change: Es la variación entre el último valor del activo comunicado y el valor inmediatamente anterior.
  • changepct: Es la variación porcentual del valor neto del activo.
  • yieldpct: Es el rendimiento de distribución.
  • returnday: Es el retorno total en un día.
  • return1: Es el retorno total en una semana.
  • return4: Es el retorno total en cuatro semanas.
  • return13: Es el retorno total en trece semanas.
  • return52: Es el retorno total en 52 semanas (anual).
  • return156: Es el retorno total en 156 semanas (3 años).
  • return260: Es el retorno total en 260 semanas (5 años).
  • incomedividend: Es el importe de la distribución de efectivo más reciente.
  • inconmedividenddate: Es la fecha de la distribución de efectivo más reciente.
  • capitalgain: Es el importe de la distribución de ganancias de capital más reciente.
  • morningstarrating: Es la valoración en “estrellas” de la firma Morningstar.
  • expenseratio: Es el coeficiente de gastos del fondo.

Además de valores bursátiles también podemos conseguir la tasa de cambio entre dos monedas. Para ello debemos usar como parámetro una cadena de texto con el nombre de ambas divisas, juntas. En el ejemplo de abajo puedes ver como pasar de euros a dólares:

=GOOGLEFINANCE(“EURUSD”)

Esto nos devolverá la diferencia de valor entre las dos monedas, por lo que si queremos convertir una cantidad de una moneda a otra nos bastará con multiplicar. Por ejemplo, para convertir 200 euros a dólares sería así:

=GOOGLEFINANCE(“EURUSD”)*200

Usar Google Translate en una fórmula de la hoja de cálculo de Google Drive.

Es posible que ya hayas visto y usado el complemento de traducción automática del procesador de textos de Google Drive. Que básicamente hace uso de su herramienta Google Translate para traducir todo el documento. Pero ¿sabías que también puedes usar Google Translate como una fórmula de la hoja de cálculo de Google Drive?

La función a invocar sería GOOGLETRANSLATE(), recibiendo tres parámetros: el texto a traducir (o la celda en la que está ese texto), el idioma de origen y el idioma al que queremos traducirlo. Por ejemplo, para traducir la celda A1 de inglés a castellano sería:

=GOOGLETRANSLATE(A1;"en";"es")

Aquí os dejo una captura de pantalla de una prueba:

Crear tablas dinámicas (pivot tables) en la hoja de cálculo de Google Drive

Las tablas dinámicas en un software de hojas de cálculo nos permiten ver relaciones entre datos o delimitar grandes conjuntos de datos. Vamos a ver un ejemplo: yo en mi Google Drive tengo una tabla donde guardo los datos de la lista de discos del artículo de Mis 1001 discos indispensables, donde añado algunos datos extra que son los que utilizo para elaborar las gráficas. Voy a generar una tabla dinámica muy simple, que me va a sacar cuántos discos de cada década hay por cada país.

Veamos los pasos a seguir:

Datos de origen
  • Primero seleccionamos las celdas con los datos de origen. Lo recomendable es poner un encabezado a las columnas para trabajar de forma más clara.
  • En el menú superior hacemos click en Datos -> Tabla dinámica.
  • En el panel derecho (el de la imagen) hacemos click en Añadir junto a Filas seleccionamos el valor que queramos tener, repetimos la opreación con Columnas.
  • En el panel lateral hacemos click en Añadir junto a Valores y escogemos el valor que queremos ver en las columnas, junto a las opciones sobre como queremos que se traten dichos datos.
Resultado final

En cualquier momento puedes desplegar el menú de la derecha para agregar o quitar campos y valores. Para ver los detalles de una celda basta también con hacer doble click sobre ella, esto abrirá una visualización detalla de los valores que contiene.

Guías y documentación de LibreOffice

En este blog hemos hablado de LibreOffice más de una vez en la sección de ofimática. Esta vez no vamos a hablar de nada en concreto, simplemente dejo por aquí este enlace. Se trata de un acceso directo a la documentación de LibreOffice en castellano.

Por desgracia de momento no está todo traducido y apenas está disponible al momento de escribir esto la guía de introducción. En caso de necesitar una guía más avanzada puedes recurrir a la documentación en inglés:

Escribir un fichero Excel desde Python

Hace ya unos años, cuando hablábamos mucho de PHP por aquí (mi vida laboral me llevó a tener que centrarme en el SQL y el javascript principalmente) vimos cómo importar y exportar ficheros de Excel con PHP. Pero ¿cómo podemos escribir un fichero de Excel usando Python?

Hay muchas librerías para realizar esta tarea, yo en mi caso he elegido XslxWriter, que podéis descargar desde este enlace. También es muy popular xlrd/xlwt, aunque creo que solo permite exportar en formato xls, pero tiene la parte positiva de permitir importar datos.

Veamos entonces paso a paso, con ejemplos de código, cómo escribir un fichero simple xlsx con Python. Los primeros pasos en nuestro código serán importar la librería, crear un nuevo libro de trabajo y crear una nueva hoja. Lo haríamos así:

import xlsxwriter

libro = xlsxwriter.Workbook('Presupuesto1.xlsx')
hoja = libro.add_worksheet()

El constructor Workbook() nos permite crear un nuevo objeto que representaría un libro de Excel. Es importante destacar que XlsxWriter no nos permite modificar ni leer ficheros de Excel, solo podemos crearlos.

La función add_worksheet() del objeto Workbook nos permite crear nuevas hojas en nuestro libro. Si invocamos esta función sin parámetros creará las hojas con un nombre numerado de forma consecutiva (Sheet1, Sheet2, Sheet3…) pero si le pasamos una cadena esta será el nombre de la hoja.

Ahora, para continuar con el ejemplo, vamos a escribir los datos que queremos mostrar en nuestra hoja de cálculo.

# El presupuesto que pintaremos en la hoja de cálculo
presupuesto = (
    ['Equipos',     4000],
    ['Cable',        100],
    ['Armario',      200],
    ['Switch',        99],
    ['AP',            50],
    ['Router',       150],
    ['Mano de Obra', 350],
)

Ok, tenemos los datos a pintar. Tenemos la librería importada y los objetos creados. ¿Qué nos queda? Unos simples pasos: primero nos posicionamos al inicio del documento, después iteramos sobre la colección de datos pintando cada columna con el método write(), que recibirá la fila, la columna y el valor. Finalmente añadiremos una fila con los totales, calculados ya con una fórmula de sumatorio, y cerraremos el objeto Workbook().

# Nos posicionamos en la primera columna de la primera fila
row = 0
col = 0

# Iteramos los datos para ir pintando fila a fila
for concepto, precio in (presupuesto):
    hoja.write(row, col,     concepto)
    hoja.write(row, col + 1, precio)
    row += 1

#Pintamos la fila de totales
hoja.write(row, 0, 'Total:')
hoja.write(row, 1, '=SUM(B1:B7)')

#Cerramos el libro
libro.close()