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”.
A | B | C | D | |
1 | item | precios | ||
2 | lapicera | 10 | ||
3 | lapiz | 25 | ||
4 | escuadra | 5 | ||
5 | cuaderno | 40 |
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.
item | precio | Impuesto: | 1.21 |
lapicera | 10 | 12.1 | |
lapiz | 25 | 30.25 | |
escuadra | 5 | 6.05 | |
cuaderno | 40 | 48.4 |
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