Lavorare con numeri romani (Microsoft Excel)
Excel include una funzione del foglio di lavoro che consente di convertire un numero in numeri romani. (Hmmm. Vediamo … Sono nato in MCMLVI. Dang! Sono un classico!) Il modo più semplice per usare i numeri romani è il seguente:
=ROMAN(123)
Tutto quello che devi fare, ovviamente, è sostituire 123 con il numero che vuoi convertire. Puoi usare qualsiasi numero compreso tra 1 e 3999. (A quanto pare i romani non hanno mai lavorato con numeri al di fuori di questo intervallo.)
È inoltre possibile, se lo si desidera, utilizzare un secondo argomento per indicare come devono essere messi insieme i numeri romani risultanti. I diversi argomenti che puoi utilizzare sono compresi tra 0 e 4, con 0 come valore predefinito. Un argomento di 0 restituisce numeri romani nella forma classica e 4 restituisce un numero romano estremamente semplificato. I valori compresi tra 0 e 4 restituiscono versioni progressivamente più semplificate. La semplificazione dei numeri romani in genere entra in gioco solo quando si tratta di numeri più grandi. Ad esempio, di seguito sono riportati i vari livelli di semplificazione del numero 1999:
Formula |
Result |
|
=ROMAN(1999,0) |
MCMXCIX |
|
=ROMAN(1999,1) |
MLMVLIV |
|
=ROMAN(1999,2) |
MXMIX |
|
=ROMAN(1999,3) |
MVMIV |
|
=ROMAN(1999,4) |
MIM |
Si noti che la funzione ROMANO restituisce un valore di testo e quindi non è possibile utilizzare il risultato in alcun tipo di calcolo: per Excel, non è più un numero.
Le versioni precedenti di Excel (incluso Excel 2003) non includono una funzione per riconvertire i numeri romani in numeri arabi. Se vuoi usare un approccio stereotipato per fare la conversione, puoi provare questo:
=MATCH(A1,INDEX(ROMAN(ROW(INDIRECT("1:4000"))),0),0)
Ciò presume che i numeri romani siano nella cella A1. Se preferisci, puoi creare la tua funzione definita dall’utente per eseguire la conversione in arabo:
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 è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (1956) si applica a Microsoft Excel 97, 2000, 2002 e 2003.