Работа с римскими цифрами (Microsoft Excel)
Excel включает функцию рабочего листа, которая позволяет преобразовывать числа в римские цифры. (Хммм. Посмотрим … Я родился в MCMLVI. Черт! Я классик!) Самый простой способ использовать римские цифры:
=ROMAN(123)
Все, что вам нужно сделать, это заменить 123 числом, которое вы хотите преобразовать. Вы можете использовать любое число от 1 до 3999. (Римляне, очевидно, никогда не работали с числами вне этого диапазона.)
При желании вы также можете использовать второй аргумент, чтобы указать, как должны складываться полученные римские цифры. Вы можете использовать различные аргументы от 0 до 4, 0 — значение по умолчанию. Аргумент 0 возвращает римские цифры в классической форме, а 4 возвращает чрезвычайно упрощенную римскую цифру. Значения от 0 до 4 возвращают все более упрощенные версии. Упрощение римских цифр обычно применяется только при работе с большими числами. Например, ниже показаны различные уровни упрощения числа 1999:
Formula |
Result |
|
=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) Next For i = 1 To WordLength - 1 If MyArray(i) < MyArray(i + 1) Then MyDeduct = MyDeduct + MyArray(i) End If Next 'Now deduct twice the value of the subtraction numbers UnRoman = MySum - 2 * MyDeduct End Function
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (1956 г.) применим к Microsoft Excel 97, 2000, 2002 и 2003.