BookTranslator
BookTranslator

Как перевести таблицу Excel, не сломав формулы и выпадающие списки

Узнайте, какой текст пропускает переводчик, работающий по ячейкам, в файле .xlsx (текст формул, форматированный текст, ссылки, диаграммы, макросы), как исправить выпадающие списки и коды, которые он может сломать, и как проверить результат с помощью бесплатного скрипта и тестовой книги.

BookTranslator

BookTranslator Team

13 мин чтения

Чтобы перевести всю книгу Excel, загрузите файл .xlsx в переводчик документов, а не переводите ячейки по одной. Встроенная команда Excel «Рецензирование» > «Перевести» работает с выделенным текстом (Microsoft Support), что подходит для заголовка, но медленно для прайс-листа. Переводчику файлов достаточно прочитать каждую текстовую ячейку, перевести её и записать обратно по тому же адресу, поэтому формулы, числа и даты остаются на своих местах.

Но он не сообщает, какой текст он вообще не прочитал. Текст, введённый внутри формулы, ячейка с одним выделенным жирным словом, ссылка, примечание, заголовок диаграммы: при переводе по ячейкам всё это может вернуться на исходном языке. И две вещи могут сломаться: выпадающий список, допустимые значения которого не были переведены, и товарный код, который был переведён.

Мы создали тестовую книгу из двух листов с текстом в каждом из этих мест, написали бесплатный скрипт проверки, который показывает, где находится текст, и прогнали книгу через локальную копию обработки электронных таблиц, которую использует BookTranslator. В этом руководстве показано, что получилось, что изменить перед загрузкой и как проверить переведённый файл.

Краткий ответ: что переводится в книге

Где находится текстПример из нашего тестаПереводит ли BookTranslator?Что делать
Обычные текстовые ячейки, включая строки заголовков«Синий блокнот», «Цена»ДаНичего
Числа, даты, логические значения4.5, 2026-10-30Оставлены как былиПроверьте числовые форматы для целевого рынка
Формулы=C2*D2Оставлены как былиНичего
Текст внутри формулы=IF(D2>5,"In stock","Low stock")НетПеренесите слова в ячейки (см. шаг 2)
Ячейка со смешанным форматированием"Ограниченное издание, ручка"Нет, вся ячейка пропускаетсяСначала очистите форматирование или переведите вручную
Ячейки с гиперссылками"Страница товара"НетОтредактируйте текст ссылки после перевода
Значение в ячейке с выпадающим списком"Канцтовары"Да, но сам выпадающий список — нетИсправьте список, иначе ячейка станет недействительной
Коды с буквами"A-77", "B-09"Отправляются переводчикуПроверьте их после перевода
Коды только из цифр или символов"00123"Оставлены как былиНичего
Примечания и комментарии"Проверить название поставщика перед выпуском"НетПереведите вручную или удалите их
Названия листов и именованные диапазоны"Товары", PriceRangeНет, чтобы формулы между листами продолжали работатьПереименовывайте листы вручную только при необходимости, после проверки формул
Диаграммы и макросыГистограмма, проект VBAУдалены из переведённого файла в нашем тестеСохраните оригинал, пересоздайте после (см. ниже)

Старые файлы .xls не принимаются. Откройте их в Excel и сначала сохраните как .xlsx. Файлы .xlsm с поддержкой макросов принимаются, но перед загрузкой прочитайте раздел о макросах: в переведённом файле макросов нет, и если загруженный файл всё ещё имеет расширение .xlsm, переименуйте его в .xlsx перед открытием.

Шаг 1: Запустите проверку вашей книги

Скачайте check_xlsx_text.py и запустите его для вашего файла:

python3 check_xlsx_text.py "Price list.xlsx"

Для работы нужен только Python 3; скрипт читает файл, не изменяя его. Вот сводка для нашей образцовой книги:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

Под счётчиками перечислен каждый элемент с указанием листа и ячейки, например Products!E2 formula text 'In stock'. Используйте этот список как план действий для Шага 2. Если в вашей книге есть диаграммы, текстовые поля, сводные таблицы или проект макросов, они также отобразятся в счётчиках.

В README описана образцовая книга, приведены хеши файлов и ссылки на скрипты, которые её создают, чтобы вы могли повторить тест.

Что произошло с нашей тестовой книгой

Мы прогнали образцовую книгу через код, который использует обработчик электронных таблиц BookTranslator, воспроизведённый локально 01.11.2026 с той же библиотекой (ExcelJS 4.4.0). Вместо настоящего перевода мы использовали заглушку, добавляющую «[DE]» перед текстом каждой ячейки. Это исключает языковую модель из теста, поэтому результаты показывают только то, что обработка файла отправляет, сохраняет и отбрасывает.

Обработчик читает каждый лист по ячейкам. Он отправляет ячейку на перевод, только если она содержит простое текстовое значение, и пропускает любой текст, состоящий только из цифр, знаков препинания и символов. Всё остальное в сетке ячеек копируется без изменений. Затем BookTranslator возвращает два файла: переведённую книгу и двуязычную книгу.

Переведённая книга

Это файл для использования. Все 6 формул, 7 чисел и дат, денежный и датовый форматы, объединённые ячейки, примечание, правило выпадающего списка и именованный диапазон вернулись без изменений. 9 ячеек заголовков и другие ячейки с простым текстом были переведены на месте. Три результата требуют внимания:

Текст внутри формул остаётся на исходном языке. В столбце Status использовалась формула =IF(D2>5,"In stock","Low stock"). Формула не является текстовой ячейкой, поэтому обработчик её не читает, и «In stock» остаётся на английском во всех строках. То же касается текста, объединённого с помощью & или CONCAT, и текста внутри HYPERLINK.

Переведённое значение выпадающего списка больше не соответствует своему списку. В ячейке H2 был выпадающий список с вариантами «Stationery, Office, Art». Значение ячейки было переведено, но список хранится в правиле проверки, а не в ячейке, поэтому переведён не был. Режим сравнения нашего скрипта проверки сообщил об этом так:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

Excel сохраняет значение, нарушающее правило проверки, но следующий человек, открывший выпадающий список, увидит только старые варианты, а команда «Данные > Обвести недопустимые данные» выделит ячейку.

Коды с буквами отправляются переводчику. «00123» был пропущен, так как содержит только цифры. «A-77» и «B-09» были отправлены, потому что содержат букву. Вернётся ли код без изменений, зависит от модели; ничто в обработке файла его не защищает. Артикул, вернувшийся как «A-77-Artikel», сломает все запросы, которые его используют.

Двуязычная книга

Двуязычный файл вставляет столбец перевода справа от каждого столбца, в котором была хотя бы одна переведённая ячейка, с заголовками вроде «Name (Translated)». Он перемещает значения ячеек в новые столбцы, но не переносит форматы ячеек и не обновляет формулы. В нашем тесте:

  • формат цены $#,##0.00 остался в столбце C, который теперь содержит названия продуктов, а цены переместились в столбец E без него;
  • формат даты остался в столбце G, где теперь находится количество, поэтому количество 10 отображалось как дата;
  • =C2*D2 переместилась в столбец K, но по-прежнему ссылалась на C2 и D2, где теперь находятся название товара и его перевод, поэтому она больше не может вернуть 45;
  • на листе Summary =SUM(Products!F2:F4) теперь суммировала пустой столбец перевода.

Таким образом, двуязычная книга предназначена для чтения исходного текста и перевода бок о бок, а не для вычислений. Не редактируйте её и не копируйте из неё формулы.

Диаграммы и макросы

В отдельной копии книги мы добавили диаграмму и проект макросов, сохранённые так, как это делает Excel. Ни того, ни другого не было ни в переведённом, ни в двуязычном файле. ExcelJS читает и записывает листы, стили, общий текст, изображения, таблицы и комментарии, но не имеет кода для частей диаграмм или проекта VBA, поэтому при сохранении он их опускает. В том же коде ничего нет для сводных таблиц, так что ожидайте, что сводные таблицы тоже будут отброшены, хотя мы не тестировали ни одну. Обработчик также сохраняет результат в виде файла .xlsx, который не может содержать макросы.

Ещё одно ограничение теста: мы создали образец книги с помощью самого ExcelJS, что является наиболее благоприятным случаем для сохранения форматов, объединений и правил проверки. Книга, сохранённая Excel, может содержать функции, которые ExcelJS не моделирует, поэтому запустите шаг сравнения ниже на своём файле, а не предполагайте такой же чистый результат.

Шаг 2: Подготовьте книгу перед загрузкой

Работайте с копией. Программа проверки подскажет, какие ячейки нужно изменить.

  1. Перенесите текст формул в ячейки. Поместите слова на небольшой лист "Labels" и укажите на них в формуле: =IF(D2>5,Labels!$A$1,Labels!$A$2). Ячейки с метками содержат обычный текст, поэтому они переводятся, и каждая формула подхватывает перевод. Это одно изменение обычно исправляет большую часть подсчёта "текст формул", поскольку одна и та же фраза часто повторяется по всему столбцу.
  2. Перенесите списки выпадающего меню в ячейки. В разделе Данные > Проверка данных измените источник с введённого списка (Stationery,Office,Art) на диапазон на листе Labels (=Labels!$B$1:$B$3). Затем значения списка переводятся вместе с ячейками, которые их используют. Проверьте несколько ячеек после этого: выпадающее меню принимает переведённое значение, только если модель перевела "Stationery" одинаково в обоих местах.
  3. Очистите смешанное форматирование. Ячейка с одним жирным или цветным словом хранится как форматированные фрагменты и полностью пропускается. Выделите ячейку и выберите Главная > Очистить > Очистить форматы или введите её заново, а затем снова примените жирный шрифт после перевода. Если у вас много таких ячеек, сначала запишите их.
  4. Решите, что делать с примечаниями и комментариями. Они не переводятся. Удалите примечания к проверке, которые вы не хотите отправлять в службу перевода, а остальные переведите вручную.
  5. Сохраните книги с макросами как .xlsx. Оставьте ваш .xlsm в качестве основного файла. Переведите копию .xlsx, затем либо скопируйте переведённые текстовые столбцы обратно в основной файл (Специальная вставка > Значения, только текстовые столбцы, чтобы не перезаписать формулы), либо экспортируйте модули VBA и импортируйте их в переведённый файл.
  6. Оставьте диаграммы на потом. В диаграмме мало текста: заголовок, названия осей и легенда, которая обычно берётся из ячеек заголовков. Часто быстрее перестроить диаграмму в переведённой книге из тех же диапазонов или вставить переведённые текстовые столбцы обратно в исходную книгу, чтобы её диаграммы и сводные таблицы обновились сами.

Шаг 3: Переведите весь файл

Загрузите .xlsx на странице переводчика документов, выберите целевой язык и проверьте указанную цену перед оплатой. Загрузка всего файла переводит каждую текстовую ячейку на каждом листе за одну задачу, что упрощает сохранение названия продукта одинаковым в строке 3 и строке 3000. Наше руководство по созданию глоссария перевода объясняет, как закрепить термины, которые не должны меняться.

Когда задача завершится, страница History предложит оба варианта загрузки. Используйте переведённую книгу. Открывайте двуязычную книгу только для проверки формулировок с кем-то, кто читает на обоих языках.

Если вы работаете в Google Таблицах, есть два других пути. Вкладка "Документы" Google Translate принимает файлы .xlsx размером до 10 МБ (Справка Google Translate); наше руководство по переводу Google Документов сравнивает его возможности. А в Таблицах есть функция GOOGLETRANSLATE(text, source_language, target_language) (Справка редакторов Google Документов), которую можно протянуть в новом столбце рядом с исходным. Это удобно для одного столбца коротких меток, но результаты являются формулами, поэтому вставьте их как значения перед тем, как поделиться таблицей. DeepL также переводит документы; см. что означают его ограничения на документы на практике. Что бы вы ни использовали, сначала запустите программу проверки на исходном файле: текст внутри формул, ссылок и диаграмм находится в одних и тех же местах независимо от того, какой инструмент читает файл.

Шаг 4: Проверьте переведённую книгу

  1. Запустите режим сравнения. Поместите исходный и переведённый файлы рядом:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    Он проверяет, что каждая формула, число и дата остались неизменными, что коды с буквами вернулись точно такими, какими были, и что каждое значение выпадающего меню присутствует в своём списке. Используйте его только на переведённой книге. Поскольку в двуязычном файле столбцы сдвигаются, почти каждая ячейка была бы отмечена.

  2. Пересчитайте. Если формула всё ещё показывает старый текст после того, как вы исправили метки, нажмите F9 (или Формулы > Вычислить сейчас).

  3. Переведите оставшееся. Используйте список из программы проверки, полученный на шаге 1: текст ссылок, примечания, заголовки диаграмм и любые ячейки, которые вы очистили от форматирования.

  4. Проверьте обрезанный текст. Переводы часто длиннее исходного текста, и короткие строки увеличиваются сильнее всего. W3C ссылается на рекомендации IBM, согласно которым среднее расширение при переводе с английского на европейские языки составляет 200–300% для текста до 10 символов (W3C). Заголовки столбцов короткие, поэтому расширьте столбцы или включите перенос текста там, где они обрезаются.

  5. Проверьте отображение чисел и дат. Значения не изменялись, но «4.50» может потребоваться показать как «4,50» для немецкого читателя. Это формат ячейки или региональная настройка, а не перевод.

  6. Не «исправляйте» имена функций. Если во французском Excel у коллеги отображается SOMME вместо SUM, это Excel показывает свои локализованные имена функций; формула та же самая.

  7. Настройте листы с письмом справа налево. Для арабского, иврита, персидского или урду включите «Макет страницы» > «Лист справа налево» и проверьте выравнивание ячеек.

  8. Попросите беглого читателя проверить перевод, если он предназначен для клиентов, например прайс-лист или каталог продукции. Машинный перевод — хороший первый черновик, но не окончательный.

Файлы CSV и TSV

В файле .csv нет формул, форматирования или выпадающих списков, поэтому большинство проблем выше исчезает. Отличаются три вещи:

  • Строка заголовков не переводится. Обработчик считает первую строку заголовками и переводит только строки данных. Переведите заголовки вручную или скопируйте их в строку данных перед загрузкой, а затем верните обратно.
  • Столбец переводится целиком. Если хотя бы в одной ячейке столбца есть буква, отправляются все ячейки этого столбца, содержащие буквы, включая коды. Режим сравнения читает только .xlsx, поэтому проверьте столбец с кодами в CSV вручную: скопируйте его из обоих файлов на один лист и сравните два столбца с помощью =EXACT(A2,B2).
  • CSV возвращается с разделителями-запятыми. Независимо от исходного разделителя переведённый CSV использует запятые; файл .tsv сохраняет табуляции. В нашем тесте CSV с разделителями-точками с запятой вернулся с разделителями-запятыми, а десятичные запятые, такие как «4,50», остались внутри кавычек. Файл в кодировке UTF-8 без метки порядка байтов. Microsoft утверждает, что Excel обычно открывает CSV в UTF-8, когда есть эта метка, иначе рекомендует импортировать его через «Данные» > «Получить данные» > «Из текста/CSV» (Microsoft Support). Если вы дважды щёлкнете по файлу и увидите искажённые символы, импортируйте его этим способом.

Если ваши данные находятся в книге с формулами, переводите .xlsx. Экспорт в CSV для перевода уничтожает все формулы.

Распространённые проблемы

ПроблемаВероятная причинаЧто делать
Целый столбец по-прежнему содержит «In stock»Слова находятся внутри формулы IFПеренесите их в ячейки-метки и укажите на них в формуле
Выпадающий список отклоняет переведённое значениеДопустимые значения введены непосредственно в правило проверкиИзмените источник правила на диапазон ячеек и переведите диапазон
Код продукта изменилсяОн содержит буквы, поэтому был отправлен на переводИсправьте его в исходном файле; запускайте режим сравнения при каждой поставке
Одна ячейка вообще не переведенаВ ней смешанное форматирование или это ссылкаОчистите форматирование или отредактируйте текст ссылки, затем переведите заново или исправьте вручную
Диаграмма или макросы пропалиБиблиотека, использованная для перезаписи файла, не сохраняет ихПереведите копию .xlsx и перенесите переведённый текст обратно в оригинал
Итоги неверны в двуязычном файлеДобавленные столбцы сдвигают значения, но не формулы и форматыИспользуйте переведённую книгу для любых вычислений
Диакритические знаки выглядят искажёнными в переведённом CSVExcel угадал неправильную кодировкуИмпортируйте его через Данные > Получить данные > Из текста/CSV
Загрузка отклоненаФайл имеет формат .xls или для открытия требуется парольСохраните его как обычный .xlsx без пароля на открытие (защита листов сама по себе допустима)

Тот же принцип применим к слайдам: презентация PowerPoint также хранит текст в местах, которые переводчик пропускает, и проверка для той статьи работает так же, как эта.

Похожие статьи