Как преобразовать числа в латинские (римские) цифры в Excel: от простых формул до VBA-скриптов

Почему римские цифры в Excel — это не так просто, как кажется

На первый взгляд, задача преобразовать обычные арабские числа (1, 2, 3) в римские (I, II, III) в Microsoft Excel выглядит тривиальной. Однако стандартных функций для этого в программе нет — в отличие от того же Word, где римские цифры доступны в меню нумерации. Это создаёт иллюзию, что задача требует глубоких знаний программирования или установки дополнительных надстроек.

На практике же существует как минимум 7 рабочих способов решить проблему — от элементарных формул до автоматизированных макросов. Главное — выбрать метод, соответствующий вашим навыкам и объёму данных. Например, для разового преобразования пары чисел подойдёт ручной ввод, а для обработки тысячи строк потребуется VBA-скрипт или пользовательская функция. В этой статье мы разберём все варианты, включая малоизвестные трюки с ТЕКСТ и ПОДСТАВИТЬ, а также покажем, как избежать типичных ошибок при работе с римскими цифрами в таблицах.

Способ 1: Встроенная функция ROMAN — проще не бывает

Самый очевидный и доступный метод — использовать функцию ROMAN, которая скрыта в глубинах Excel, но работает во всех версиях программы, начиная с Excel 2003. Её синтаксис предельно прост:

=ROMAN(число; [формат])

Где:

  • 🔢 число — арабское число, которое нужно преобразовать (от 1 до 3999).
  • 📝 формат (необязательно) — стиль римских цифр:
    • 0 или опущено — классический формат (например, IV).
    • 1 — упрощённый (III вместо IIII для часов).
    • 2 — альтернативный классический (редко используется).

Примеры использования:

Aрабское числоФормулаРезультат
14=ROMAN(14)XIV
49=ROMAN(49, 1)XLIX
2026=ROMAN(2026)MMXXIV
3999=ROMAN(3999)MMMCMXCIX
⚠️ Внимание: Функция ROMAN не работает с числами больше 3999. Для значений от 4000 потребуется использовать пользовательскую функцию (см. Способ 5).
📊 Какой стиль римских цифр вы используете чаще?
Классический (IV)
Упрощённый (IIII)
Не знаю разницы
Другой

Способ 2: Ручной ввод через таблицу соответствий

Если вам нужно преобразовать всего несколько чисел, а формулы кажутся избыточными, можно воспользоваться таблицей соответствий. Этот метод не требует знаний функций и подходит для Excel Online или мобильной версии, где возможности ограничены.

Алгоритм действий:

  1. Создайте два столбца: в первом укажите арабские числа, во втором — соответствующие римские.
  2. Используйте функцию ВПР (или XLOOKUP в новых версиях), чтобы автоматически подставлять римские цифры:
    =ВПР(A2; $D$2:$E$100; 2; ЛОЖЬ)

    где $D$2:$E$100 — диапазон с таблицей соответствий.

Пример таблицы соответствий:

AрабскоеРимское
1I
4IV
5V
9IX
10X
⚠️ Внимание: При ручном вводе легко допустить ошибку в больших числах (например, написать IC вместо XC). Всегда проверяйте результат с помощью онлайн-конвертера.

☑️ Подготовка таблицы соответствий

Выполнено: 0 / 4

Способ 3: Формула без ROMAN — для версий Excel без функции

В редких случаях (например, в некоторых локализованных версиях Excel или в альтернативных табличных редакторах) функция ROMAN может отсутствовать. Тогда на помощь приходит комбинация функций ТЕКСТ, ПОВТОР и ПОДСТАВИТЬ.

Пример формулы для чисел от 1 до 3999:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(

ТЕКСТ(A2;"0");"3000";"MMM");"2000";"MM");"1000";"M");

"900";"CM");"800";"DCCC") & "...

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

Полная формула для чисел 1-3999

Скачать файл Excel с готовой формулой (ссылка)

Способ 4: Пользовательская функция на VBA — для больших диапазонов

Если вам регулярно приходится работать с римскими цифрами, имеет смысл создать пользовательскую функцию (UDF) на VBA. Она будет доступна во всех книгах, если сохранить её в Персональной книге макросов.

Код функции для вставки в редактор VBA (Alt + F11):

Function ToRoman(ByVal ArabNum As Integer) As String

Dim RomanNum As String

Dim Arab() As Integer, Roman() As String

Arab = Array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)

Roman = Array("M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I")

Dim i As Integer

For i = 0 To 12

While ArabNum >= Arab(i)

RomanNum = RomanNum & Roman(i)

ArabNum = ArabNum - Arab(i)

Wend

Next i

ToRoman = RomanNum

End Function

После вставки кода функция станет доступна в Excel как =ToRoman(число). Преимущества метода:

  • 🔄 Работает с числами до 3999 (можно модифицировать для больших значений).
  • 📊 Поддерживает обработку массивов (если ввести как формулу массива).
  • 🔒 Не зависит от локализации Excel.
⚠️ Внимание: Перед использованием VBA убедитесь, что в настройках безопасности Excel разрешены макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра...).

Способ 5: Надстройка «EuroConvert» — для ленивых

Если вам не хочется возиться с формулами или VBA, можно установить бесплатную надстройку EuroConvert, которая добавляет в Excel функцию =ARABICTOROMAN. Эта надстройка поддерживает числа до 9999 и предлагает дополнительные опции форматирования.

Как установить:

  1. Скачайте файл EuroConvert.xla с официального сайта.
  2. В Excel перейдите в Файл → Параметры → Надстройки.
  3. Нажмите Перейти... внизу окна, затем Обзор и выберите скачанный файл.
  4. Поставьте галочку рядом с EuroConvert и нажмите ОК.

После установки введите:

=ARABICTOROMAN(число; [стиль])

Где стиль может принимать значения от 0 до 4 (разные варианты отображения).

Способ 6: Power Query — для обработки больших данных

Если вам нужно преобразовать тысячи строк, Power Query (доступен в Excel 2016+) станет идеальным решением. Этот инструмент позволяет создавать многократные преобразования без пересчёта формул.

Алгоритм:

  1. Выделите исходные данные и перейдите на вкладку Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте Настраиваемый столбец с формулой:
    =Number.ToText([YourColumn], "R")

    где [YourColumn] — имя столбца с арабскими числами.

  3. Нажмите Закрыть и загрузить.

Преимущество метода — скорость обработки и возможность интеграции с другими источниками данных (например, из SQL или CSV).

Способ 7: Онлайн-конвертеры — когда Excel недоступен

Если у вас нет доступа к Excel (например, вы работаете на чужом компьютере), можно воспользоваться онлайн-конвертерами. Большинство из них позволяют скопировать результат прямо в таблицу. Популярные сервисы:

  • 🌐 RapidTables — поддерживает числа до 3999999.
  • 🌐 CalculatorSoup — с пояснениями правил преобразования.
  • 🌐 MathsIsFun — интерактивный конвертер с визуализацией.

Важно: При копировании результатов из онлайн-сервисов в Excel используйте «Специальную вставку» (Ctrl + Alt + V) и выбирайте формат «Текст», чтобы избежать автоматического преобразования римских цифр обратно в арабские.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при работе с римскими цифрами. Вот самые распространённые:

ОшибкаПричинаРешение
#ИМЯ? при использовании ROMANОпечатка в названии функции или отсутствие функции в вашей версии ExcelПроверьте регистр (должно быть ROMAN, а не roman). Для старых версий используйте VBA.
Неверное отображение чисел 4, 9, 40 и т.д. (например, IIII вместо IV)Используется упрощённый формат (параметр 1 в функции ROMAN)Уберите второй аргумент или поставьте 0.
Ошибка #ЗНАЧ! при больших числахФункция ROMAN не поддерживает числа > 3999Используйте VBA или надстройку EuroConvert.
Римские цифры преобразуются обратно в арабскиеExcel распознаёт римские цифры как текст, но при копировании может интерпретировать их как числаИспользуйте «Специальную вставку» → «Текст» или добавьте апостроф перед числом ('XIV).

Ещё одна частая проблема — некорректная сортировка. Римские цифры в Excel сортируются как текст (по алфавиту), а не по числовому значению. Чтобы исправить это, добавьте вспомогательный столбец с арабскими эквивалентами и сортируйте по нему.

FAQ: Ответы на частые вопросы

Можно ли в Excel преобразовать римские цифры обратно в арабские?

Да, но стандартной функции для этого нет. Варианты:

  • Использовать пользовательскую функцию VBA (аналогично ToRoman, но наоборот).
  • Создать таблицу соответствий и применять ВПР.
  • Воспользоваться Power Query с формулой =Number.FromText([RomanColumn]).

Готовый VBA-код для обратного преобразования:

Function FromRoman(RomanNum As String) As Integer

' Код функции (доступен по запросу)

End Function

Почему функция ROMAN не работает в моём Excel?

Возможные причины:

  1. Вы используете Excel для Mac — в некоторых версиях функция отсутствует.
  2. Локализация программы — в неанглоязычных версиях название функции может отличаться (например, РИМСКОЕ в русскоязычном Excel).
  3. Устаревшая версия (раньше Excel 2003) — обновите программу или используйте VBA.

Проверьте доступность функции, набрав =ROMAN( — если подсказка не появляется, функция отсутствует.

Как сделать римские цифры в нумерации строк?

Excel не поддерживает римскую нумерацию строк напрямую, но есть обходные пути:

  • Добавьте вспомогательный столбец с формулой =ROMAN(СТРОКА()).
  • Используйте условное форматирование, чтобы скрыть арабские номера.
  • Для печати экспортируйте таблицу в Word и примените римскую нумерацию там.
Можно ли использовать римские цифры в формулах?

Нет, Excel не распознаёт римские цифры как числовые значения. Например, формула =XIV+II вернёт ошибку. Сначала преобразуйте их в арабские числа (см. FAQ выше), затем выполняйте вычисления.

Как автоматически обновлять римские цифры при изменении арабских?

Если вы используете формулы (ROMAN, VBA или Power Query), обновление происходит автоматически. Для ручного ввода или онлайн-конвертеров:

  1. Создайте связанную таблицу с исходными данными.
  2. Используйте Power Query для динамического преобразования.
  3. Настройте макрос на событие (например, при изменении листа).

Полная формула для Способа 3 (без ROMAN):

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ТЕКСТ(A2;"0");"3000";"MMM");"2000";"MM");"1000";"M");"900";"CM");"800";"DCCC");"700";"DCC");"600";"DC");"500";"D");"400";"CD");"300";"CCC");"200";"CC");"100";"C");"90";"XC");"80";"LXXX");"70";"LXX");"60";"LX");"50";"L");"40";"XL");"30";"XXX");"20";"XX");"10";"X");"9";"IX");"8";"VIII");"7";"VII");"6";"VI");"5";"V");"4";"IV");"3";"III");"2";"II");"1";"I");"0";"")