Ελληνικοί – Αγγλικοί Χαρακτήρες: Βάζω τάξη

Ταξινομώ αλφαβητικά μια λίστα. Γιατί η APTA και τα XANIA  εμφανίζονται πριν την ΑΛΕΞΑΝΔΡΟΥΠΟΛΗ;
Η ταξινόμηση, το φιλτράρισμα, η δημιουργία pivot, η εύρεση, η αντικατάσταση είναι καθημερινές πράξεις για ένα χρήστη του excel. Για να δουλέψουν όμως σωστά, απαραίτητη προϋπόθεση στις λίστες, στους πίνακες, στις βάσεις πάνω στις οποίες θα εφαρμοστούν να έχουν εισαχθεί σωστά τα δεδομένα. Ένα πολύ συνηθισμένο πρόβλημα για τον Έλληνα χρήστη, είναι η λανθασμένη εναλλαγή πληκτρολόγιου μεταξύ ελληνικών και αγγλικών (λατινικών) χαρακτήρων.
Οι λέξεις APTA και XANIA  έχουν εισαχθεί με αγγλικό πληκτρολόγιο, και στην ταξινόμηση το excel σωστά τις τοποθετεί πριν τις λέξεις με ελληνικούς χαρακτήρες.
Τέτοια λάθη, έως ότου εντοπιστούν και διορθωθούν, μπορεί να αποτελούν μόνο απλή ενόχληση, αλλά σε ορισμένες περιπτώσεις είναι δυνατόν να οδηγήσουν σε ζημιογόνες αποφάσεις. Φανταστείτε ότι διαχειρίζεστε τα αποθέματα μιας αποθήκης και η αναζήτηση στη βάση δεδομένων σας δίνει για το προϊόν με  κωδικό ΑΖΚ-121 αποθέματα μηδέν, ενώ στην πραγματικότητα υπάρχουν μεγάλες ποσότητες στην αποθήκη, «κρυμμένες» πίσω από τον ίδιο κωδικό  ΑΖΚ-121 αλλά τον οποίο ο χειριστής έγραψε με ελληνικούς χαρακτήρες.
Υπάρχουν 14 κοινά κεφαλαία γράμματα μεταξύ των 2 αλφάβητων άρα οι πιθανότητες για λάθος πολύ μεγάλες. Όλοι καθημερινά κάνουμε τέτοια λάθη.
Ένας τρόπος να τα μειώσουμε, είναι να αποφεύγουμε όπου είναι δυνατό, τη χρήση κεφαλαίων γραμμάτων. Με τα μικρά γράμματα τα λάθη αλφαβήτου γίνονται πιο εύκολα αντιληπτά.
Σήμερα θα σας δώσω μερικές απλές συναρτήσεις φύλλου με τις οποίες θα μπορέσετε να εντοπίσετε και να απαλλάξετε  τις πολύτιμες βάσεις σας από τα λάθη αυτά και να εμποδίσετε τη επανάληψη τους.
Κυρίες και κύριοι, το Excel-Λύσεις με υπερηφάνεια παρουσιάζει τις συναρτήσεις: «καταδότες του πληκτρολογίου» 

1η  συνάρτηση:  Μετρά το πλήθος των Αγγλικών (Λατινικών) χαρακτήρων σε μία εγγραφή (κελί). 
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1);CHAR(ROW(INDIRECT("65:90")));"")))
 Εντοπίζει και μετρά τα 52 (κεφαλαία και μικρά) λατινικά γράμματα και μόνο αυτά. Για το κείμενο που υπάρχει στο κελί Α1, η συνάρτηση θα επιστρέψει έναν αριθμό με το πλήθος των λατινικών γραμμάτων που θα δει εκεί. Αριθμούς, ελληνικά γράμματα, και αλλά σύμβολα θα τα αγνοήσει.
Ισοδύναμη είναι η συνάρτηση:
=SUMPRODUCT((CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))>=65)*(CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))<=90))
 2η  συνάρτηση:  Μετρά το πλήθος των Ελληνικών χαρακτήρων σε μία εγγραφή (κελί).
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(LOWER(A1));CHAR(ROW(INDIRECT("193:219")));"")))
 Η συνάρτηση εντοπίζει και καταμετρά τους 69 χαρακτήρες που παράγονται από το ελληνικό πληκτρολόγιο, δηλαδή τα 25+24 μικρά και κεφαλαία άτονα γράμματα , τα 7+7 τονισμένα φωνήεντα και τους 6 χαρακτήρες με διαλυτικά ( ΐ ΰ ϊ ϋ Ϋ Ϊ  ). Δεν καταμετρά χαρακτήρες του πολυτονικού συστήματος (δηλαδή χαρακτήρες με πνεύματα, περισπωμένη, υπογεγραμμένη κλπ).
 Το ίδιο κάνει και η συνάρτηση:
 
=SUMPRODUCT((CODE(MID(UPPER(LOWER(A1));ROW(INDIRECT("1:"&LEN(A1)));1))>=193)*(CODE(MID(UPPER(LOWER(A1));ROW(INDIRECT("1:"&LEN(A1)));1))<=219))
Πως θα χρησιμοποιήσετε τις συναρτήσεις αυτές.
 Ας υποθέσουμε ότι στη στήλη Α έχετε χιλιάδες εγγραφές (έστω από το κελί Α1 έως το κελί Α9000) με ονόματα στην ελληνική γλώσσα. Θέλετε να ελέγξετε αν έχουν παρεισφρήσει λατινικοί χαρακτήρες στις εγγραφές.
Σε μια κενή στήλη έστω την Β και στο κελί Β1 εισάγετε την 1η συνάρτηση που μέτρα το πλήθος των λατινικών χαρακτήρων. Λογικά θα σας επιστρέψει μηδέν. (Αν όχι, τότε βρήκατε το πρώτο σας λάθος). Σύρτε – αντιγράψτε τη συνάρτηση έως το κελί Β9000. Στο κελί Β9001 εισάγετε τη συνάρτηση = SUM(B1:B9000). Αν το άθροισμα είναι μηδέν, τότε συγχαρητήρια, είστε αλάνθαστος. Αν όχι τότε όποιο αριθμό σας δίνει η SUM τόσα είναι και τα λάθη σας. Για να εντοπίσετε ακριβώς τις λανθασμένες εγγραφές, ταξινομείστε (φθίνουσα ταξινόμηση ως προς τη στήλη Β) και οι προβληματικές εγγραφές θα εμφανιστούν πάνω – πάνω. Φροντίστε στην ταξινόμηση να συμπεριλάβετε και μια στήλη με αύξοντες αριθμούς για να μπορέσετε μετά να επαναφέρετε τα δεδομένα στην αρχική τους μορφή. Φυσικά αν οι εγγραφές στη στήλη Α δεν είναι πολλές, δεν χρειάζεται ταξινόμηση, αρκεί να ψάξουμε στη στήλη Β, τις συναρτήσεις που επιστρέφουν αριθμούς μεγαλύτερους από μηδέν.
Αν δεν είστε άνθρωπος των αριθμών αλλά των χρωμάτων, σας προτείνω, αντί για συναρτήσεις και ταξινομήσεις, μορφοποίηση υπό όρους που θα χρωματίσει με ωραίο χρώμα τα λάθη σας.
Επιλέγετε τη στήλη Α και εισάγετε τη μορφοποίηση υπό όρους με τύπο:
 =SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1);CHAR(ROW(INDIRECT("65:90")));"")))>0
και χρώμα γραμματοσειράς ή χρώμα μοτίβου κόκκινο. Θα δείτε όλα τα κελιά που περιέχουν έστω και ένα λατινικό χαρακτήρα να κοκκινίζουν από ντροπή. Αφού διορθώσετε τα λάθη, προτείνω να αφήσετε και να μην διαγράψετε  την μορφοποίηση. Κάθε νέα εγγραφή στη στήλη Α θα ελέγχεται αυτόματα, ο χρήστης θα βλέπει να κοκκινίζει η εγγραφή του και θα την διορθώνει αμέσως.
 Κατά παρόμοιο τρόπο, αν οι εγγραφές είναι στην αγγλική και θέλετε να δείτε αν έχουν παρεισφρήσει ελληνικοί χαρακτήρες, η μορφοποίηση υπό όρους θα έχει τύπο:
 =SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(LOWER(A1));CHAR(ROW(INDIRECT("193:219")));""))) >0
 Να μία ακόμα μορφοποίηση:
 =SUMPRODUCT((CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))>=65)*(CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))<=90))=LEN(SUBSTITUTE(A1;" ";""))
 Ο τύπος αυτός επιστρέφει TRUE, όταν το κελί Α1 περιέχει αποκλειστικά και μόνο λατινικούς χαρακτήρες (κενά επιτρέποντα). Για τον τύπο αυτό εξισώσαμε το τύπο 1β με τον τύπο
=LEN(SUBSTITUTE(A1;" ";""))
ο οποίος μετρά το πλήθος των χαρακτήρων ενός κελιού αγνοώντας τα κενά..
 Αν πάλι είστε οπαδός του «αποφασίζουμε και διατάσουμε» χρησιμοποιήστε τους παραπάνω τύπους σε απαγορευτικές επικυρώσεις δεδομένων.
Παράδειγμα , η επικύρωση με τύπο:
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1);CHAR(ROW(INDIRECT("65:90")));"")))=0
αν εφαρμοστεί στα κελιά της στήλης Α, εμποδίζει το χρήστη να εισάγει έστω και ένα λατινικό χαρακτήρα σε κελί της στήλης. Για να εντοπίσετε και να διορθώσετε λανθασμένες εγγραφές που έχουν γραφτεί στη στήλη, πριν την εισαγωγή της επικύρωσης, χρησιμοποιήστε το κουμπί «περικύκλωση μη έγκυρων δεδομένων». Θα το βρείτε στην γραμμή εργαλείων: «Έλεγχος». ( Για το excel 2007: Δεδομένα > Εργαλεία δεδομένων > Επικύρωση δεδομένων > Περικύκλωση μη έγκυρων δεδομένων)
Την ίδια διαδικασία ακολουθείστε αν εισάγετε δεδομένα με επικόλληση . Θυμίζω ότι η επικύρωση δεν ελέγχει εγγραφές που εισάγονται με επικόλληση. (Φυσικά εννοώ επικόλληση τιμών, αξιών. Η κοινή συνηθισμένη επικόλληση, επικολλά και την μορφή του κελιού «πηγή» και διαγράφει τη επικύρωση).
Παρόμοια, για την απαγόρευση εισαγωγής ελληνικών χαρακτήρων:
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(LOWER(A1));CHAR(ROW(INDIRECT("193:219")));"")))=0
Να μερικές ακόμα επικυρώσεις;
 Να επιτρέπεται αποκλειστικά και μόνο η είσοδος λατινικών χαρακτήρων στο κελί -κενά επιτρέπονται.
=SUMPRODUCT((CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))>=65)*(CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))<=90))=LEN(SUBSTITUTE(A1;" ";""))
 Να επιτρέπεται αποκλειστικά και μόνο η είσοδος λατινικών χαρακτήρων στο κελί -κενά δεν επιτρέπονται.    
=SUMPRODUCT((CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))>=65)*(CODE(MID(UPPER(A1);ROW(INDIRECT("1:"&LEN(A1)));1))<=90))=LEN(A1)
Τέλος, να και ένας τύπος για την καταμέτρηση ειδικών χαρακτήρων και συμβόλων που κατά κανόνα δεν  εισάγονται με το πληκτρολόγιο (εκτός ANSI χαρακτήρες) όπως ελληνικά γράμματα του πολυτονικού, κινέζικα γράμματα κλπ
=SUMPRODUCT((CODE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1))=63)*(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)<>"?"))
Για να δείτε όλους τους ANSI χαρακτήρες, σε ένα άδειο φύλλο, στο κελί Α1, γράψτε τη συνάρτηση    =CHAR(ROW()) και σύρτε τη έως το κελί Α255

Κατεβάστε, αν θέλετε, ένα βιβλίο excel με παραδείγματα: Latin_Greek_characters

Το ίδιο αρχείο μπορείτε να κατεβάσετε και από εδώ

This entry was posted in excel, Επικύρωση, Μορφοποίηση υπό όρους, Συναρτήσεις φύλλου and tagged , , , , , . Bookmark the permalink.

2 Responses to Ελληνικοί – Αγγλικοί Χαρακτήρες: Βάζω τάξη

  1. Ο/Η Geo λέει:

    Καταπληκτικό!!!!!!!!!!!!!!!!

  2. Ο/Η Στέλιος λέει:

    Πολύ αποτελεσματικοί τύποι! Είναι όπως τα λέτε. Σε μία στήλη με χιλιάδες κωδικούς, βρήκα 160 λάθη σε γράμματα. Ούτε υποψιαζόμουν ότι υπάρχουν λάθη. Μου πήρε πολύ λίγο χρόνο να τα διορθώσω. Πολύτιμοι τύποι.

Τα σχόλια είναι απενεργοποιημένα.