Как писать формулы в 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»