2016-08-28 22 views
2

私は、以下の問題にどのように最善の取り組みをしているのか、脳暴走の過程にあります。どんな入力も大歓迎です。Pythonを使用してExcelに数式を書き込む

サンプルExcelシートの列:

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

私はExcelが列Cの列Aの項目とBの一致または不一致と表示結果は、私は、列Cに入力した式は=IF(A1=B1, "Match", "Mismatch")

であるかどうかを教えたいですエクセルで

、私は彼らに式を適用するには、列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それについてはわかりませんが、リンク先に行くと、そうなる可能性が非常に高いです。 –

関連する問題