Excel включает функцию рабочего листа, которая позволяет преобразовывать числа в римские цифры. (Хммм. Посмотрим … Я родился в MCMLVI. Черт! Я классик!) Самый простой способ использовать римские цифры:
= ROMAN (123)
Все, что вам нужно сделать, это, очевидно, заменить 123 числом, которое вы хотите преобразовать. Вы можете использовать любое число от 1 до 3999. (Римляне, очевидно, никогда не работали с числами вне этого диапазона.)
Вы также можете, если хотите, использовать второй аргумент, чтобы указать, как должны получиться римские цифры. быть собраны вместе. Вы можете использовать различные аргументы от 0 до 4, 0 – значение по умолчанию. Аргумент 0 возвращает римские цифры в классической форме, а 4 возвращает чрезвычайно упрощенную римскую цифру. Значения от 0 до 4 возвращают все более упрощенные версии. Упрощение римских цифр обычно применяется только при работе с большими числами. Например, ниже показаны различные уровни упрощения числа 1999:
= ROMAN (1999,0) | MCMXCIX | |
= ROMAN (1999,1) | MLMVLIV | |
= ROMAN (1999,2) | MXMIX | |
= ROMAN (1999,3) | MVMIV | |
= ROMAN (1999,4) | MIM |
Обратите внимание, что функция ROMAN возвращает текстовое значение, и поэтому вы не можете использовать результат в каких-либо вычислениях – для Excel это уже не число.
Более старые версии Excel (включая Excel 2003) это делают не включать функцию преобразования римских цифр обратно в арабские числа. Если вы хотите использовать шаблонный подход для преобразования, вы можете попробовать следующее:
= MATCH (A1, INDEX (ROMAN (ROW (INDIRECT («1: 4000»))), 0 ), 0)
Предполагается, что римские цифры находятся в ячейке A1. При желании вы можете создать свою собственную определяемую пользователем функцию для преобразования в арабский язык:
Public Function UnRoman (RomanNumber As String) As Integer Dim MySum As Integer Dim MyDeduct As Integer Dim MyWord As String Dim L As String Dim WordLength As Integer Dim i As Integer Dim MyArray () As Integer MySum = 0 MyDeduct = 0 MyWord = UCase (RomanNumber) WordLength = Len (MyWord) ReDim MyArray (WordLength + 1) For i = 1 To WordLength L = Mid (MyWord, i, 1) MyArray (i) = Switch (L = «I», 1, L = «V», 5, _ L = «X», 10, L = «L», 50, L = «C», 100, _ L = «D», 500, L = «M», 1000) MySum = MySum + MyArray (i) Далее For i = 1 To WordLength — 1 Если MyArray (i)
Источник: