web-dev-qa-db-fra.com

Écrire une formule dans Excel avec Python

Je suis en train de réfléchir à la meilleure façon de résoudre le problème ci-dessous. Toute contribution est grandement appréciée.

Exemples de colonnes de feuille Excel:

Column A  |  Column B  | Column C
Apple     |  Apple     |
Orange    |  Orange    |
Pear      |  Banana    |

Je veux qu'Excel me dise si les éléments des colonnes A et B correspondent ou ne correspondent pas et affichent les résultats dans la colonne C. La formule que j'entre dans la colonne C serait =IF(A1=B1, "Match", "Mismatch")

Sur Excel, je ferais simplement glisser la formule vers le reste des cellules de la colonne C pour leur appliquer la formule et le résultat serait:

Column A  |  Column B  | Column C
Apple     |  Apple     | Match
Orange    |  Orange    | Match
Pear      |  Banana    | Mismatch

Pour automatiser cela en utilisant un script python, j'ai essayé:

import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
Sheet = wb.get_sheet_by_name('Sheet1')
for cellObj in Sheet.columns[2]:
    cellObj.value = '=IF($A$1=$B$1, "Match", "Mismatch")
wb.save('test.xlsx')

Cela a écrit la formule dans toutes les cellules de la colonne C, mais la formule ne faisait référence qu'aux cellules A1 et B1, donc toutes les cellules de la colonne C = Correspondance.

Column A  |  Column B  | Column C
Apple     |  Apple     | Match
Orange    |  Orange    | Match
Pear      |  Banana    | Match

Comment voulez-vous gérer cela?

10
spiderlily

Vous souhaiterez probablement rendre la création de la formule dynamique afin que chaque ligne de C soit tirée des lignes correspondantes de A et B:

for i, cellObj in enumerate(Sheet.columns[2], 1):
    cellObj.value = '=IF($A${0}=$B${0}, "Match", "Mismatch")'.format(i)
9
Moses Koledoye