wie kann man mit einem Makro Mod 2, Mod 3..bis Mod 16 einer 16 stelligen Zahl prüfen? Wie prüft man ob die ersten 14 Ziffern der Zahl mit 13 restlos teilbar ist? Das Problem ist die Größe der Zahl.
Danke in Voraus, alifa
If (x/y) = INT(x/y) Then
den Rest berechnest du dann so
... = x - y * Int(x/y)
dim x as Variant
x = CDec("1234567890123456")
if (x / 13) = int(x / 13) then
msgbox "Durch 13 teilbar"
Else
msgbox "nicht durch 13 teilbar"
end if
die ersten 14 Stellen einer Zahl bekommst du so:
=CDbl(Left(Format(x, "0"), 14))
Function xMod(Dividend, Divisor)
Dim dd, dv As Variant
dd = CDec(Dividend): dv = CDec(Divisor)
xMod = CLng(dd - dv * Fix(dd / dv))
End Function
Eine ZellFml sähe dann so aus: =xMod(A1;16) für eine (16stellige) TextZahl in A1 (remainder 16).
RPP63
Function BigModulo&(Basis&, Exponent&, ModOp&)
Dim i&
BigModulo = 1
For i = 1 To Exponent
BigModulo = (BigModulo * Basis) Mod ModOp
Next
End Function
Bei Bedarf kann ich auch ein xlsx mit dem Formel-Äquivalent hochladen.Function BigModulo(TextZahl As String, Divisor As Double) As Double
Dim i As Long
Dim d As Double
For i = 1 To Len(TextZahl)
BigModulo = Val(Rest & Mid(TextZahl, i, 1))
If BigModulo > Divisor Then
BigModulo = BigModulo - Divisor * Int(Rest / Divisor)
End If
Next
End Function
Gruß DanielUm mit einem Makro das Modulo von großen 16-stelligen Zahlen zu berechnen, kannst du folgende Schritte befolgen:
VBA-Editor öffnen: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".
Makro-Code einfügen: Kopiere und füge den folgenden Code in das Modul ein:
Function BigModulo(TextZahl As String, Divisor As Double) As Double
Dim i As Long
Dim Rest As Double
For i = 1 To Len(TextZahl)
Rest = Val(Rest & Mid(TextZahl, i, 1))
If Rest >= Divisor Then
Rest = Rest - Divisor * Int(Rest / Divisor)
End If
Next
BigModulo = Rest
End Function
Makro ausführen: Du kannst das Makro jetzt in einer Zelle verwenden, indem du =BigModulo(A1;16) eingibst, wobei A1 die Zelle ist, die die 16-stellige Zahl enthält.
Fehler: "Überlauf": Wenn du mit Zahlen arbeitest, die zu groß für die Standardmodulo-Funktion sind, verwende einen Textformat für die 16-stellige Zahl.
Lösung: Stelle sicher, dass die Zahl als Text formatiert ist, um Überläufe zu vermeiden. Du kannst dies erreichen, indem du ein Apostroph (') vor die Zahl in der Zelle setzt.
Fehler: Falsches Ergebnis bei Modulo 10 oder 11: Überprüfe, ob die Zahl korrekt übergeben wird und dass der Divisor nicht größer als 14 ist, wenn du die mod-Funktion in Excel verwendest.
CDec-Funktion verwenden: Wenn du mit sehr großen Zahlen (bis zu 29 Stellen) arbeiten möchtest, kannst du die CDec-Funktion in VBA verwenden:
Dim x As Variant
x = CDec("1234567890123456")
If (x / 13) = Int(x / 13) Then
MsgBox "Durch 13 teilbar"
Else
MsgBox "Nicht durch 13 teilbar"
End If
Excel-Modul-Funktion: Du kannst auch die Excel-Modul-Funktion wie =MOD(A1;16) verwenden, aber beachte die 14-stellige Begrenzung für Zahlen.
Beispiel 1: Berechne das Modulo von 1234567890123456 und 16:
=BigModulo("1234567890123456"; 16).Beispiel 2: Prüfe, ob die ersten 14 Ziffern von 1234567890123456 durch 13 teilbar sind:
Dim TestZahl As String
TestZahl = Left("1234567890123456", 14)
If BigModulo(TestZahl, 13) = 0 Then
MsgBox "Die Zahl ist durch 13 teilbar."
Else
MsgBox "Die Zahl ist nicht durch 13 teilbar."
End If
Bei der Verwendung von langen Zahlenformaten in Excel ist es nützlich, sie als Text zu formatieren, um Genauigkeitsprobleme zu vermeiden.
Experimentiere mit verschiedenen Divisoren wie 10 oder 11, um die Funktionsweise der Modulofunktionen besser zu verstehen.
Nutze die CDec-Funktion für sehr große Zahlen und kombiniere sie mit Int für ganzzahlige Divisionen.
1. Wie viele Stellen kann die Excel MOD-Funktion verarbeiten?
Die Excel MOD-Funktion kann bis zu 14-stellige Zahlen verarbeiten. Für größere Zahlen solltest du das VBA-Skript verwenden.
2. Was ist der Unterschied zwischen MOD in Excel und dem VBA-Operator Mod?
Die Excel MOD-Funktion kann nur mit Zahlen bis zu 14 Stellen arbeiten, während der VBA-Operator Mod mit größeren Zahlen umgehen kann, solange sie im richtigen Format vorliegen.