Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Römische Zahlen in Arabische umwandeln

Römische Zahlen in Arabische umwandeln
20.09.2015 10:35:21
Alifa
Hallo,
leider habe ich im Netz keine entsprechende Lösung gefunden. Die vorhandenen Funktionen in VBA akzeptieren auch fehlerhafte römische Zahlen und wandeln sie um. Kann mir jemand mit einer Funktion helfen, die "VX", zum Beispiel, nicht in 5 umwandelt, sondern "False" ausgibt. Danke im Voraus.
Gruß, Erhard

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Römische Zahlen in Arabische umwandeln
20.09.2015 10:43:27
Sepp
Hallo Alifa,
http://www.excelformeln.de/formeln.html?welcher=228
Tabelle2

 ABC
1ArabischRömischArabisch
22230MMCCXXX2230
3797DCCXCVII797
41998MCMXCVIII1998
53218MMMCCXVIII3218
61358MCCCLVIII1358
765LXV65
82611MMDCXI2611
9581DLXXXI581
101520MDXX1520
112035MMXXXV2035
12 VX#NV
13 XV15

Formeln der Tabelle
ZelleFormel
B2=RÖMISCH(A2)
C2{=VERGLEICH(B2;RÖMISCH(ZEILE(INDIREKT("$1:$3999"))); 0)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Sepp

Anzeige
AW: Römische Zahlen in Arabische umwandeln
20.09.2015 11:13:23
Alifa
Hallo Sepp,
danke für die Antwort. Ich suche eigentlich eine Funktion für mein Makro in VBA. Zunächst sollen die römischen Zahlen auf Gültigkeit geprüft und anschließend in arabische übersetzt werden. Mein Makro stellt Bedingungen betreff Additionen verschiedener Werte.
Gruß, Erhard

Anzeige
AW: Römische Zahlen in Arabische umwandeln
20.09.2015 12:03:13
Sepp
Hallo Alifa,
probier mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
Dim RN As String

RN = "MDCCCLXXXVII"

If IsRomanNumerial(RN) Then
  MsgBox RomToArab(RN)
Else
  MsgBox "Ungültige Eingabe!"
End If
End Sub


Private Function IsRomanNumerial(RomanNumerial As String) As Boolean
Dim objRegExp As Object

Set objRegExp = CreateObject("Vbscript.regexp")

With objRegExp
  .IgnoreCase = True
  .Global = True
  .Pattern = "(([IXCM])\2{3,})|[^IVXLCDM]|([IL][LCDM])|([XD][DM])|(V[VXLCDM])|(IX[VXLC])|" & _
    "(VI[VX])|(XC[LCDM])|(LX[LC])|((CM|DC)[DM])|(I[VX]I)|(X[CL]X)|(C[DM]C)|(I{2,}[VX])|" & _
    "(X{2,}[CL])|(C{2,}[DM])"
  If .test(RomanNumerial) = True Then GoTo ErrExit
End With
IsRomanNumerial = True
Exit Function
ErrExit:
IsRomanNumerial = False
End Function


Private Function RomToArab(r As String) As Integer
Dim p As Integer
Dim z As String
r = UCase(r)
If Len(r) = 1 Then '1. Basisklausel
  Select Case r
    Case "I"
      RomToArab = 1
    Case "V"
      RomToArab = 5
    Case "X"
      RomToArab = 10
    Case "L"
      RomToArab = 50
    Case "C"
      RomToArab = 100
    Case "D"
      RomToArab = 500
    Case "M"
      RomToArab = 1000
  End Select
ElseIf Len(r) = 0 Then '2. Basisklausel
  RomToArab = 0
Else 'rekursive Klausel
  search_max r, z, p
  RomToArab = RomToArab(z) - _
    RomToArab(Mid(r, 1, p - 1)) + _
    RomToArab(Mid(r, p + 1, 1000))
End If
End Function


Private Sub search_max(r As String, z As String, p As Integer)
Dim i As Integer
Dim j As Integer
Const f = "MDCLXVI"

For i = 1 To Len(f)
  For j = 1 To Len(r)
    If Mid(r, j, 1) = Mid(f, i, 1) Then
      p = j
      z = Mid(f, i, 1)
      Exit Sub
    End If
  Next j
Next i
End Sub


Gruß Sepp

Anzeige
AW: Römische Zahlen in Arabische umwandeln
20.09.2015 15:17:53
Alifa
Hallo Sepp,
finde Dein Konzept Prima. So funktioniert die Funktion "RomToArab", wenn der Strng vorher auf Gültigkeit geprüft wird. Vielen Dank.
Gruß, Erhard

Im Ggsatz zur UDF 'RomToArab' fktioniert ...
20.09.2015 13:59:42
Luc:-?
…die Fml aus excelformeln nicht für alle RÖMISCH-Varianten (Arg2=1…4), Sepp!
Gruß + schöSo, Luc :-?

Anzeige
AW: Römische Zahlen in Arabische umwandeln
20.09.2015 11:55:56
Daniel
Hi
hast du eine Funktion, die auch arabisch in römisch wandeln kann?
wenn ja, dann wandle doch einfach die arabische Zahl zurück in eine römische und prüfe, ob das Ergebnis das gleiche ist wie die ursprüngliche römische Zahl.
Gruss Daniel

Das wären aber bis 5 mögliche Varianten je Zahl!
20.09.2015 14:01:22
Luc:-?
Gruß, Luc :-?

AW: Das wären aber bis 5 mögliche Varianten je Zahl!
20.09.2015 14:43:07
Alifa
Hallo,
Wenn den Variabeln a1,b1,a5,b5,c5,b4,c4,d4 die Werte "X","I","V","II","I","I","I","I" zugeordnet werden
gilt:Romar(a1 & b1)=Romar(a5 & b5 & c5)+Romar(b4 & c4 & d4)
Romar ist die gesuchte Funktion, welche die Römischen Zahlen in arabische umwandelt. Wenn diese Funktion falsche Ergebnisse gibt, kann ich das zwar mit der Funktion ArabischRömisch prüfen, hilft mir aber nicht weiter.
Gruß, Erhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Römische Zahlen in Arabische umwandeln


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Öffne Excel und erstelle eine neue Arbeitsmappe.
  2. Funktion einfügen:
    • Öffne den Visual Basic for Applications (VBA) Editor mit ALT + F11.
    • Füge ein neues Modul hinzu (Einfügen > Modul).
  3. VBA-Code einfügen: Kopiere den folgenden Code in das Modul:
Option Explicit

Function IsRomanNumerial(RomanNumerial As String) As Boolean
    Dim objRegExp As Object
    Set objRegExp = CreateObject("Vbscript.regexp")

    With objRegExp
        .IgnoreCase = True
        .Global = True
        .Pattern = "(([IXCM])\2{3,})|[^IVXLCDM]|([IL][LCDM])|([XD][DM])|(V[VXLCDM])|(IX[VXLC])|"
        If .test(RomanNumerial) = True Then GoTo ErrExit
    End With
    IsRomanNumerial = True
    Exit Function
ErrExit:
    IsRomanNumerial = False
End Function

Function RomToArab(r As String) As Integer
    ' Deine Implementierung hier
End Function
  1. Funktion nutzen: Verwende die Funktion IsRomanNumerial um die Gültigkeit römischer Zahlen zu prüfen und RomToArab, um sie in arabische Zahlen umzuwandeln.

Häufige Fehler und Lösungen

  • Fehlerhafte Eingabe: Wenn die Funktion IsRomanNumerial "False" zurückgibt, bedeutet das, dass die Eingabe ungültig ist.

    • Lösung: Stelle sicher, dass die römische Zahl korrekt eingegeben wurde, z.B. 1998 sollte als MCMXCVIII eingegeben werden.
  • Falsche Ergebnisse: Manchmal gibt die Funktion falsche Werte zurück.

    • Lösung: Überprüfe den VBA-Code auf Tippfehler oder unlogische Bedingungen in der Umwandlungsfunktion.

Alternative Methoden

  • Excel-Funktion nutzen: Du kannst die Excel-Funktion RÖMISCH verwenden, um arabische in römische Zahlen umzuwandeln. Zum Beispiel:
    =RÖMISCH(1998)
  • Online-Tools: Es gibt verschiedene Online-Übersetzer, die arabische Zahlen in römische umwandeln können.

Praktische Beispiele

  • Um 1998 in römische Zahlen umzuwandeln, verwende:

    =RÖMISCH(1998)

    Das Ergebnis sollte MCMXCVIII sein.

  • Um das Datum 22 in römische Zahlen umzuwandeln, schreibe:

    =RÖMISCH(22)

    Ergebnis: XXII.


Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Eingaben besser zu managen.
  • Nutzung von Named Ranges: Verwende benannte Bereiche, um deine Formeln übersichtlicher und leichter anwendbar zu machen.
  • Leistungsoptimierung: Achte darauf, unnötige Berechnungen zu vermeiden, indem du die Gültigkeit von Eingaben vor der Umwandlung prüfst.

FAQ: Häufige Fragen

1. Wie kann ich arabische Zahlen in römische umwandeln?
Verwende die Excel-Funktion RÖMISCH, um arabische Zahlen in römische umzuwandeln.

2. Was mache ich, wenn meine Funktion falsche Werte zurückgibt?
Überprüfe den eingegebenen Wert auf Gültigkeit und stelle sicher, dass die Eingabe den römischen Zahlenregeln entspricht. Nutze die Funktion IsRomanNumerial zur Validierung.

3. Gibt es eine Möglichkeit, mehrere römische Zahlen in einem Rutsch zu überprüfen?
Ja, du kannst eine Schleife in VBA verwenden, um mehrere Eingaben zu überprüfen und umzuwandeln.

4. Woher weiß ich, ob eine römische Zahl gültig ist?
Die Funktion IsRomanNumerial prüft die Eingabe auf Gültigkeit. Gibt sie False zurück, ist die Zahl nicht gültig.

5. Kann ich diese Funktionen auch für andere Zahlen verwenden?
Ja, die Funktionen lassen sich anpassen, um auch andere numerische Umwandlungen zu unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige