Ik ben op zoek naar een functie in Excel (UDF waarschijnlijk) om
automatisch het IBAN-nummer (of SEPA-nummer) te berekenen voor een
Duitse bankrekeningnummer.
Zie hieronder de berekening, zoals die uitgevoerd zou moeten worden:
Bankleitzahl (8n): 37040044
Konto (10n): 532013000
Landcode (2a): DE
DE wordt omgezet naar het getal 1314 (positie in het alfabet + 10,
A=0)
Het getal wat als basis dient wordt dan: 37040044532013000131400
(BLZ + Konto + Landcode + "00")
Ik moet dan het controle getal bepalen door middel van onderstaande
formule:
mod(98 - mod(basisgetal * 100,97),97)
Als ik het zelf doe in Excel dan lukt het niet, omdat de getallen na
de 15de positie wegvallen.
Ik heb al op internet gezocht en wel wat gevonden, maar ik krijg het
niet aan de praat.
Misschien dat er iemand binnen de groep is die dit al standaard heeft.
Alvast bedankt.
Ronald Ferdinandus.
Kun je hier wat mee:
Option Explicit
Plaats deze functies in een algemene module
Function IBAN(BLZ As String, Konto As String, LC As String)
Dim strLC As String
Dim varResult As Variant
Dim intC As Long
Dim i As Integer
strLC = Asc(UCase(Left(LC, 1))) - 55 & Asc(UCase(Right(LC, 1))) - 55
varResult = BLZ & Konto & strLC & "00" '
IBAN = varResult
End Function
Function Modulo(strGetal As String, intRest As Integer)
Dim intC As Long
Dim i As Integer
For i = Len(strGetal) To 1 Step -1
intC = intC + (Mid(strGetal, i, 1) * _
TienTallen(Len(strGetal) - i, intRest)) Mod intRest
Next
intC = intC Mod intRest
Modulo = intC
End Function
Function TienTallen(intMacht As Integer, intRest As Integer)
Select Case intMacht
Case Is <= 8
TienTallen = 10 ^ intMacht Mod intRest
Case Is <= 16
TienTallen = TienTallen(8, intRest) * _
(10 ^ (intMacht - 8) Mod intRest) Mod intRest
Case Is <= 24
TienTallen = TienTallen(16, intRest) * _
(10 ^ (intMacht - 16) Mod intRest) Mod intRest
Case Else
MsgBox "Getal is te lang"
End Select
End Function
De eerste functie (IBAN) levert het IBAN nummer op volgens jouw beschrijving
De tweede functie is (Modulo) is een vervanging voor de functie Rest (of onder VBA
mod).
Deze functie maakt gebrik van de functie TienTallen.
Jan
Hallo Jan,
Hartstikke bedankt.
Ik heb het bij 2 nummers gecontroleerd via internet en de uitkomst
klopt.
Ik heb alleen de format van de BLZ en Konto nummer aangepast (moeten 8
en 10 posities lang zijn, via Format)
Nogmaals bedankt.
Ronald Ferdinandus.