私は、以下の問題に最もよく取り組む方法をブレインストーミングの最中です。どんな入力でも大歓迎です。
Excelシートの列の例:
_Column A | Column B | Column C
Apple | Apple |
Orange | Orange |
Pear | Banana |
_
列Aと列Bの項目が一致するか不一致かをExcelに知らせ、結果を列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
_
これをどのように扱いますか?
おそらく、数式の作成を動的にして、C
の各行がA
およびB
の対応する行から取得されるようにする必要があります。
for i, cellObj in enumerate(Sheet.columns[2], 1):
cellObj.value = '=IF($A${0}=$B${0}, "Match", "Mismatch")'.format(i)