Как пользоваться: Формула Excel в Python
- Вставьте формулу Excel или Google Sheets либо выберите готовую в разделе Примеры.
- Выберите целевой язык — по умолчанию открыт Python, а переключиться можно в любой момент.
- Переименуйте найденные ссылки на ячейки в понятные имена переменных, например
B2→price. - Выберите полную функцию или только выражение, затем скопируйте или скачайте код. Вспомогательные функции добавляются автоматически, если формула в них нуждается.
Перенос логики таблиц в Python
Аналитические команды регулярно переносят модели Excel в Python — чтобы автоматизировать ежемесячный отчёт, передать данные в конвейер pandas или вынести расчёт за API. Ручной перенос формул медленный и рискованный, потому что Python и Excel по-разному трактуют такие детали, как округление и сравнение текста. Этот конвертер разбирает формулу по собственным правилам приоритета Excel и генерирует эквивалентный, читаемый код на Python.
=SUMIFS(D2:D100, B2:B100, "North", C2:C100, ">=1000")
def calculate(d2_d100, b2_b100, c2_c100):
return sum_ifs(d2_d100, b2_b100, 'North', c2_c100, '>=1000')
Функция sum_ifs() (и использующая её функция matches_criteria()) добавляется над основной функцией, поэтому результат работает без правок.
Соответствие функций Excel и Python
| Excel | Python |
|---|---|
IF(c, a, b) | a if c else b |
IFS / SWITCH | chained conditional expressions |
AND, OR, NOT | and, or, not |
= and <> | == and != |
a & b | str(a) + str(b) |
a ^ b | a ** b |
SUM(A2:A10) | sum(a2_a10) |
ROUND(x, 2) | excel_round() helper — not round() |
MOD(a, b) | a % b |
SUMIFS / COUNTIF… | sum_ifs(), count_if() helpers |
VLOOKUP / XLOOKUP | vlookup(), xlookup() helpers |
IFERROR(x, y) | if_error(lambda: x, y) |
LEFT / MID / LEN | slicing, len() |
TODAY() / NOW() | date.today(), datetime.now() |
Подводные камни, которые учитывает конвертер
- Банковское округление. Встроенная
round(2.5)в Python возвращает 2, аround(0.125, 2)— 0.12; Excel даёт 3 и 0.13. Поэтому в результате используется вспомогательная функцияexcel_round()на основеDecimalсROUND_HALF_UP. - Конкатенация. Выражение
"Итого: " + 5в Python вызываетTypeError, поэтому каждый нетекстовый операнд&оборачивается вstr(). - IF — это выражение.
IFпревращается в условное выражение Python (a if c else b), а вложенные IF естественно объединяются в цепочку. - Целочисленное деление. Оператор
/в Python 3 всегда возвращает float, как и в Excel. - Ошибки.
IFERRORпревращается вif_error(lambda: …, fallback), которая перехватываетZeroDivisionError,LookupErrorпри поиске и другие исключения. - Даты.
DATE,TODAYиYEARсоответствуют модулюdatetime. Excel пересчитывает некорректные даты (например, месяц 13), а Python выдаёт ошибку — конвертер предупреждает вас об этом.
Работа с pandas
Сгенерированные функции работают со скалярами и списками. Чтобы применить построчную формулу к DataFrame, вызовите df.apply(lambda r: calculate(r.price, r.qty), axis=1). Для агрегатов вроде SUMIFS булевы маски pandas (df.loc[(df.region == 'North') & (df.total >= 1000), 'amount'].sum()) работают быстрее на больших объёмах данных.
Поддерживаемые функции: IF, IFS, SWITCH, AND, OR, NOT, XOR, IFERROR, IFNA, ISBLANK, ISNUMBER, ISTEXT, SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, COUNTBLANK, PRODUCT, MEDIAN, ROUND, ROUNDUP, ROUNDDOWN, INT, TRUNC, ABS, SIGN, MOD, POWER, SQRT, EXP, LN, LOG, LOG10, PI, CEILING, FLOOR, RAND, RANDBETWEEN, SUMIF, SUMIFS, COUNTIF, COUNTIFS, AVERAGEIF, AVERAGEIFS, SUMPRODUCT, VLOOKUP, XLOOKUP, MATCH, INDEX, CONCAT, CONCATENATE, TEXTJOIN, LEFT, RIGHT, MID, LEN, UPPER, LOWER, PROPER, TRIM, SUBSTITUTE, REPLACE, FIND, SEARCH, REPT, VALUE, EXACT, TEXT (форматы чисел), TODAY, NOW, DATE, YEAR, MONTH, DAY. Саму таблицу можно загрузить с помощью Excel to JSON и json.load().
Также ищут как: google sheets формула в python, vlookup в python, excel to python онлайн, формула excel pandas.
Инструменты, которые хорошо сочетаются с Формула Excel в Python
- Формула Excel в JavaScript — Вставьте формулу из таблицы и получите понятный JavaScript: функцию с именованными параметрами, правильным порядком операций и небольшими вспомогательными функциями для того, чего нет в JavaScript, например SUMIFS и VLOOKUP.
- Формула Excel в SQL — Вставьте формулу Excel и получите эквивалентное SQL-выражение или запрос SELECT: IF и IFS как CASE WHEN, SUMIFS и COUNTIFS как условные агрегаты, а также подходящие строковые и датные функции для вашей базы данных.
- Формула Excel в PHP — Вставьте формулу из таблицы и получите функцию на PHP 8: тернарные операторы в скобках, строковые функции mb_* и вспомогательные функции для поиска, условных сумм и MOD в стиле Excel.
- CSV в JSON — Вставьте CSV или TSV и получите JSON-массив объектов.
Часто задаваемые вопросы
Почему в результате используется excel_round(), а не round()?
round(2.5) равно 2. Excel округляет половины от нуля. Вспомогательная функция полностью повторяет поведение Excel.Работает ли это с DataFrame из pandas?
.tolist() или применяйте построчную функцию с помощью df.apply(…, axis=1).Как переводится VLOOKUP?
vlookup(value, table, column, approximate), где таблица — это список строк. Точное совпадение (FALSE) сравнивает текст без учёта регистра, как в Excel, а при отсутствии значения выбрасывается LookupError, которую перехватывает IFERROR.