Apuntes mientras aprendo sobre software y computadoras.

programación

Cómo agregar y usar una fórmula en Excel usando Python

En este apunte rápido (y práctico) voy a investigar cómo agregar y usar una fórmula en Excel usando Python.

Para esto voy a utilizar la librería Openpyxl, la misma que ya estuve usando en al menos otras dos ocasiones:

– Cómo convertir archivos xls en xlsx con Python y Pandas

– Cómo copiar filas de Excel en una nueva planilla con Python

Vale agregar que todo esto también es valido para LibreOffice o programas similares.

¿Cuál es la idea?

Tengo un archivo llamado “items” con la extensión “.xlsx” para Excel.

Dentro del mismo archivo tengo la siguiente tabla, que ocupa las columnas “A y B” entre las filas “1 y 5”.


ABCD
1itemprecios

2lapicera10

3lapiz25

4escuadra5

5cuaderno40

De este modo se encuentra la tabla original

El objetivo de este programa es primero agregar un valor (1.21) en la celda D1. Supongamos que esto es para incluir la información de un impuesto que falta en los precios.

Luego voy a multiplicar cada precio de la columna B por el valor en D1, haciendo para esto una fórmula que voy a incluir en la columna C.

Por lo tanto los nuevos resultados de la multiplicación se van a ver reflejados en la columna C del siguiente modo.

itemprecioImpuesto:1.21



lapicera1012.1
lapiz2530.25
escuadra56.05
cuaderno4048.4
La tabla con los nuevos valores agregados

El código:

Comparto el programa completo por si te interesa empezar a usarlo o modificarlo. Luego voy a dar una breve explicación de como funciona cada parte.

import openpyxl

#Directorio del archivo y planilla activa
wb = openpyxl.load_workbook(r'/camino/al/direcorio/items.xlsx')
ws = wb.active

# Agregar una fila por debajo de la primera
ws.insert_rows(2, amount=1)

# Agergar nuevos valores a las celdas
ws['C1'] = 'Impuesto:'
ws['D1'] = '1.21'

# Revisar todas las celdas de las columnas B hasta el final
for row in range(3, ws.max_row + 1):
    # Agregar formula en columna C Para multiplicar columna B por el valor en D1
    ws.cell(row=row, column=3).value = f'=B{row}*$D$1'

# guardar todo esto en un nuevo archivo 
wb.save('nuevo_items.xlsx')

Cómo funciona:

Bueno, en la primera parte no hay nada muy diferente a lo que venía haciendo:

import openpyxl

#Directorio del archivo y planilla activa
wb = openpyxl.load_workbook(r'/camino/al/direcorio/items.xlsx')
ws = wb.active

# Agregar una fila por debajo de la primera
ws.insert_rows(2, amount=1)

# Agergar nuevos valores a las celdas
ws['C1'] = 'Impuesto:'
ws['D1'] = '1.21'

Básicamente abro el archivo y la planilla. Luego creo una nueva fila debajo de la primera, para que la tabla pueda entenderse un poco mejor. Y por último agrego las nuevas celdas, especialmente importante la D1 donde agrego el valor de “1.21”.

Lo más importante para esta ocasión creo que es lo siguiente:

# Revisar todas las celdas de las columnas B hasta el final
for row in range(3, ws.max_row + 1):
    # Agregar formula en columna C Para multiplicar columna B por el valor en D1
    ws.cell(row=row, column=3).value = f'=B{row}*$D$1'

Esto va a revisar todas las filas desde la tercera hasta la última. Recordemos que el primer dato a evaluar empieza en la tercera fila, porque agregué una extra.

Y lo que sigue es agregar en la columna C la siguiente fórmula “B{row}*$D$1”.

Lo que resulta es multiplicar cada fila de B por el valor de D1. Lo bueno es que si luego reemplazamos el valor de D1 por otro en la planilla de Excel, el resultado de la fórmula se actualiza sola.

Para finalizar se guarda todo en un nuevo archivo diferente, con el objetivo de no alterar el original.

Conclusión:

Con esto terminamos el apunte para aprender cómo agregar y usar una fórmula en Excel usando Python.

No tengo mucho más que agregar por el momento, espero que te sirva de ayuda.

Si encontrás algún error o considerás que mi explicación no es muy útil, por favor avisame en los comentarios para que pueda mejorar el texto.

La seguimos en el próximo apunte.

Leave a Reply