Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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 :-?

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 :-?

Anzeige
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

356 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige