2016-08-28 56 views
2

我正在脑力激荡的过程中如何最好地解决以下问题。任何输入是不胜感激。用Python编写公式到Excel

样品Excel表列:

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

我希望Excel告诉我是否在列A和B匹配或不匹配并显示结果列项C.我在列C中输入的公式将是=IF(A1=B1, "Match", "Mismatch")

Excel的,我也只是拖动公式单元格中的其余C列的公式适用于他们,其结果将是:

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

向该使用Python脚本自动化,我想:

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') 

这写的公式,以在列C中的所有细胞,然而,公式只引用单元格A1和B1,从而导致在列C =匹配的所有小区。

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

你将如何处理?

回答

4

你可能想使公式的创建动态的,所以的C每一行从AB相应的行需要:

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

它完美。谢谢! – spiderlily

+0

对不起旧的帖子,但有人[提到它](https://stackoverflow.com/questions/45133245/write-formula-to-excel-with-python-error),openpyxl已经改变,或者我错过了什么? – PRMoureu

+0

@PRMoureu不知道这一点,但通过链接后,很可能是这样。 –