Εμφάνιση ενός μόνο μηνύματος
  #1  
Παλιά 05-10-11, 18:00
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή Έλεγχος Εγκυρότητας ΑΜΚΑ

Μετά από τη μέθοδο Αναζήτησης ΑΜΚΑ, συνέχισα τις δοκιμές μ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
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 06-10-11 στις 22:46.
Απάντηση με παράθεση