programing

Python을 사용하여 Excel에 수식 쓰기

lovejava 2023. 6. 8. 19:06

Python을 사용하여 Excel에 수식 쓰기

저는 아래의 문제를 어떻게 해결하는 것이 최선인지 브레인스토밍하는 중입니다.어떤 의견이든 대단히 감사합니다.

Excel 시트 열 샘플:

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

엑셀에서 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

파이썬 스크립트를 사용하여 이를 자동화하기 위해 다음을 시도했습니다.

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)

다행히도 이제 당신은 특정한 기록에서 공식을 쉽게 할 수 있습니다.또한 다음과 같은 더 간단한 기능도 사용할 수 있습니다.

  1. wb.sheetnames대신에wb.read_sheet_names()
  2. sheet = wb['SHEET_NAME']대신에sheet = wb.get_sheet_by_name('SHEET_NAME')

공식은 다음과 같이 쉽게 삽입할 수 있습니다.

sheet['A1'] = '=SUM(1+1)'

언급URL : https://stackoverflow.com/questions/39195957/write-formula-to-excel-with-python