2016-09-30 2 views
0

python 2.7 및 openpyxl을 사용하여 IF 수식을 다른 시트의 필드를 참조하는 Excel 워크 시트에 삽입합니다.참조 조건부 수식이 실패한 경우 openpyxl

다른 수식이 작동하는 동안 (CONTIF, COUTN, SUM 등)이 "간단한"IF 수식이 작동하지 않는 이유를 찾지 못했습니다. 문제

경우에만 이것은 당신이 할 수있는 자체 공식 주석에 내 코드

for i in range(0,len(sortedWorkers)): 
     for a, rr in enumerate(dates): 
      row_nb = i + 3 
      coll = 3 + a 
      clmn_letter = get_column_letter(coll + 3) 
      # =IF(Worked!I$2=7;Worked!I3;"") 
      valFormula = '=IF(Worked!%s$2=7;Worked!%s%s;"")' %(clmn_letter,clmn_letter, str(row_nb)) 
      _cl = ws12.cell(column= coll, row= row_nb, value=valFormula) 

입니다. 형식이 정확합니다. 수동으로 Excel에 삽입하면 작동합니다.

또한 필드 좌표와 모든 것이 일치합니다.

제안 사항?

답변

2

수식은 때로는 GUI에 표시되는 것과 다른 방식으로 XML로 serialize됩니다. 접두사가 있거나 다른 단어를 사용하거나, 여기에 해당 될 수 있습니다. 매개 변수 사이에 다른 구분 기호를 사용합니다. 소수점 구분 기호로 쉼표를 사용하는 국가에서는 GUI에서 매개 변수를 구분하는 데 세미콜론이 사용되지만 XML은 쉼표를 사용합니다.

Excel에서 만든 파일의 원본을보고 확인할 수 있습니다.

+0

Excel 셀에 수식이 없습니다. 읽을 수없는 콘텐츠를 복구하거나 제거 할 때 오류가 발생합니다. 마찬가지로 나는 같은 수식이 다른 시트에 들어가고 모든 것이 잘 작동한다고 말했다. 내 제안을 확인하겠습니다. – Yebach

+0

마지막 줄을 다시 읽으십시오. –

0

결국 문제는 IF 수식 쉼표를 사용해야한다는 것입니다. ","세미콜론이 아님 ";"

NB 함수 이름과 함수 인수는 쉼표로 구분해야하며 세미콜론과 같은 다른 구두점은 사용하지 않아야합니다.

+0

기본적으로 내가 말했고 openpyxl 문서에서 다루었습니다. –