Έλεγχος Εγκυρότητας ΑΜΚΑ Μετά από τη μέθοδο Αναζήτησης ΑΜΚΑ, συνέχισα τις δοκιμές μoυ, "ανακάλυψα" τον αλγόριθμο
και σας παρουσιάζω τη μέθοδο επικύρωσης ΑΜΚΑ σε VB και στην Excel σαν συνάρτηση. Συνάρτηση στην Excel:
Στο κελί A2 βρίσκεται ο αριθμός ΑΜΚΑ
Ο τύπος είναι: Παράθεση:
=IF(LEN(A2)=11;NOT(MOD(MID(A2;1;1)+(MID(A2;2;1)*2)-(9*(MID(A2;2;1)*2>9))+MID(A2;3;1)+(MID(A2;4;1)*2)-(9*(MID(A2;4;1)*2>9))+MID(A2;5;1)+(MID(A2;6;1)*2)-(9*(MID(A2;6;1)*2>9))+MID(A2;7;1)+(MID(A2;8;1)*2)-(9*(MID(A2;8;1)*2>9))+MID(A2;9;1)+(MID(A2;10;1)*2)-(9*(MID(A2;10;1)*2>9))+MID(A2;11;1);10)))
|
Ο κώδικας VB: Option Explicit
Public Sub CheckMyAMKA()
Debug.Print IsValidAMKA("1005690xxxx")
End Sub
Public Function IsValidAMKA(AMKANumber) As Boolean
Dim IsEven As Boolean, i%, iDigit%, iSum%, sTMP$, sChr$
For i = 1 To Len(AMKANumber)
sChr = Mid(AMKANumber, i, 1)
If IsNumeric(sChr) Then sTMP = sTMP & sChr
Next
If Len(sTMP) <> 11 Then Exit Function
For i = 1 To Len(sTMP)
iDigit = Mid(sTMP, i, 1)
If IsEven Then
iDigit = iDigit * 2
If iDigit > 9 Then iDigit = iDigit - 9
End If
iSum = iSum + iDigit
IsEven = Not IsEven
Next
IsValidAMKA = iSum Mod 10 = 0
End Function |