Trabajar con números romanos (Microsoft Excel)
Excel incluye una función de hoja de trabajo que le permite convertir un número a números romanos. (Hmmm. Veamos … Nací en MCMLVI. ¡Diablos! ¡Soy un clásico!) La forma más sencilla de usar los números romanos es la siguiente:
=ROMAN(123)
Todo lo que necesita hacer, obviamente, es reemplazar 123 con el número que desea convertir. Puedes usar cualquier número entre 1 y 3999. (Parece que los romanos nunca trabajaron con números fuera de este rango).
También puede, si lo desea, usar un segundo argumento para indicar cómo se deben juntar los números romanos resultantes. Los diferentes argumentos que puede utilizar son del 0 al 4, siendo 0 el valor predeterminado. Un argumento de 0 devuelve números romanos en la forma clásica y 4 devuelve un número romano extremadamente simplificado. Los valores entre 0 y 4 devuelven versiones progresivamente más simplificadas. La simplificación de los números romanos normalmente solo entra en juego cuando se trata de números más grandes. Por ejemplo, a continuación se muestran los distintos niveles de simplificación del número 1999:
Formula |
Result |
|
=ROMAN(1999,0) |
MCMXCIX |
|
=ROMAN(1999,1) |
MLMVLIV |
|
=ROMAN(1999,2) |
MXMIX |
|
=ROMAN(1999,3) |
MVMIV |
|
=ROMAN(1999,4) |
MIM |
Debe tener en cuenta que la función ROMAN devuelve un valor de texto y, por lo tanto, no puede usar el resultado en ningún tipo de cálculo; en lo que respecta a Excel, ya no es un número.
Las versiones anteriores de Excel (incluido Excel 2003) no incluyen una función para convertir números romanos a números arábigos. Si desea utilizar un enfoque basado en fórmulas para realizar la conversión, puede intentar esto:
=MATCH(A1,INDEX(ROMAN(ROW(INDIRECT("1:4000"))),0),0)
Esto supone que los números romanos están en la celda A1. Si lo prefiere, puede crear su propia función definida por el usuario para realizar la conversión al árabe:
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 es su fuente de formación rentable en Microsoft Excel.
Este consejo (1956) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.