
07-02-10, 12:16
|
 | Super Moderator Όνομα: Θανάσης Στυλιανίδης Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 18-10-2009 Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
| |
Επαλήθευση επικύρωση ΑΦΜ (με λάθη) Παράθεση:
Αρχική Δημοσίευση από nisgia ...
Ορίστε ένας ακόμη τύπος ο οποίος ελέγχει την εγκυρότητα ενός Α.Φ.Μ.
και πιστεύω πως θα φανεί χρήσιμος σε όσους μαζεύουν αποδείξεις λιανικής
και χρησιμοποιούν το Excel για την καταχώρησή τους. Κώδικας: =IF(G5<>"";IF(AND(NOT(ISERROR(--G5));LEN(G5)=9);
IF(MOD(MOD(SUM(MID(G5;9-{1;2;3;4;5;6;7;8};1)*(2^{1;2;3;4;5;6;7;8}));11);10)=--RIGHT(G5;1);
"Έγκυρος Α.Φ.Μ.";"Μη έγκυρος Α.Φ.Μ.");"Λάθος καταχώρηση!");"")
... | Μπράβο Γιάννη πολύ καλό 
έτσι για ανταπόδοση των "compliments"
Αν μου επιτρέπεις το MOD(....;10) δεν χρειάζεται αφου έχεις --RIGHT(G5;1)
και αν θέλουμε να μικρύνει ακόμα περισσότερο θα έλεγα ούτε το NOT
Τι λες για αυτόν (τα κελιά που περιέχουν τον ΑΦΜ είναι κείμενο όπως προείπες) Κώδικας: =IF(M5<>"";IF(OR(ISERROR(--M5);LEN(M5)<>9);"Λάθος καταχώρηση!";
IF(MOD(SUM(MID(M5;9-{1;2;3;4;5;6;7;8};1)*(2^{1;2;3;4;5;6;7;8}));11)=--RIGHT(M5;1);
"Έγκυρος Α.Φ.Μ.";"Μη έγκυρος Α.Φ.Μ."));"")
Κερδίζουμε 6 bytes ανά κελί που περιέχει τον τύπο στο τελικό αποθηκευμένο βιβλίο
ή αν τα κελιά που περιέχουν τον ΑΦΜ δεν είναι απαραίτητα κείμενο, θα έλεγα Κώδικας: =IF(M6<>"";IF(OR(ISERROR(--M6);LEN(M6)>9);"Λάθος καταχώρηση!";
IF(MOD(SUM(MID(RIGHT(REPT("0";9)&M6;9);9-{1;2;3;4;5;6;7;8};1)*(2^{1;2;3;4;5;6;7;8}));11)=--RIGHT(M6;1);
"Έγκυρος Α.Φ.Μ.";"Μη έγκυρος Α.Φ.Μ."));"")
όπου το κέρδος είναι όμως μόνον 1 byte ανά κελί που περιέχει τον τύπο (παρά του ότι ο τύπος είναι μακρύτερος). Όλα για το κέρδος γιατί έρχονται δύσκολες μέρες
Τα λέμε
Θανάσης
ΥΓ Οι μετρήσεις έγιναν με Excel 2002 Ελληνικό
Τελευταία επεξεργασία από το χρήστη gr8styl : 09-02-10 στις 00:43.
Αιτία: add prefix
|