Как писать формулы в openpyxl в немецкой версии ExcelPython

Программы на Python
Anonymous
Как писать формулы в openpyxl в немецкой версии Excel

Сообщение Anonymous »

У меня есть следующая немецкая формула в Excel, которая отлично работает:

Код: Выделить всё

=WENN(UND(SVERWEIS(B2; '\\path\path\path\path\[filename.xlsx]sheetname'!$A:$C; 3; FALSCH) = 0,01; SVERWEIS(B2; '\\path\path\path\path\[filename.xlsx]sheetname'!$A:$D; 4; FALSCH) = DATUM(9999; 12; 31); XODER(RECHTS(LINKS(SVERWEIS(B2; '\\path\path\path\path\[filename.xlsx]sheetname'!$A:$E; 5; FALSCH); 8); 3) = "150"; RECHTS(LINKS(SVERWEIS(B2; '\\path\path\path\path\[filename.xlsx]sheetname'!$A:$E; 5; FALSCH); 8); 3) = "020")); "Muss neuen Preis bekommen!"; "")
Теперь я попытался автоматизировать процесс для всех имеющихся у меня данных с помощью Python, и моя английская формула выглядит так:

Код: Выделить всё

formula = (
f'=IF(AND(VLOOKUP(B{row_num}, \'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$C, 3, FALSE) = 0.01, '
f'VLOOKUP(B{row_num}, \'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$D, 4, FALSE) = DATE(9999, 12, 31), '
f'XOR(RIGHT(LEFT(VLOOKUP(B{row_num}, \'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$E, 5, FALSE), 8), 3) = "150", '
f'RIGHT(LEFT(VLOOKUP(B{row_num}, \'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$E, 5, FALSE), 8), 3) = "020")), '
'"Muss neuen Preis bekommen!", "")'
)
При написании формулы в ячейках она правильно переводит все, кроме XOR-условия. После этого я попытался просто написать немецкую команду для XOR (XODER) в своем коде Python, в результате чего я получил ошибку «#VALUE» в Excel. Мне просто нужно зайти в ячейку и нажать Enter, и формула будет рассчитана правильно. Я пытался заставить Excel пересчитать все формулы на моем листе с помощью Win32 или изменить способ написания формулы на моем листе Excel. Например, я попробовал это:

Код: Выделить всё

formulager1 = (
f'=WENN(UND('
f'SVERWEIS(B{row_num}; '
f'\'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$C; 3; FALSCH) = 0,01; '
f'SVERWEIS(B{row_num}; '
f'\'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$D; 4; FALSCH) = DATUM(9999; 12; 31); '
f'XODER('
f'RECHTS(LINKS(SVERWEIS(B{row_num}; '
f\'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$E; 5; FALSCH); 8); 3) = \"150\"; '
f'RECHTS(LINKS(SVERWEIS(B{row_num}; '
f'\'\\\\path\\path\\path\\path\\[filename.xlsx]sheetname\'!$A:$E; 5; FALSCH); 8); 3) = \"020\"'
f')); \"Muss neuen Preis bekommen!\"; \"\")'
)
Я также попробовал добавить «_xlfn». префикс, который упоминается в этом вопросе:
Похоже, ничего из того, что я пробовал, не работает, поэтому мой вопрос:
Есть ли у кого-нибудь из вас идеи, как мне мог бы правильно написать мою формулу в Excel? Будь то изменение способа написания формулы с помощью сценария Python или корректировка кода, чтобы все формулы пересчитывались, или даже способ, которым Excel правильно переводит условие XOR, что, по моему мнению, было бы самым простым решением.Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... el-version

Вернуться в «Python»