Πίνακας περιεχομένων
Το σεμινάριο εξηγεί πώς μπορείτε να κάνετε το Excel VLOOKUP ευαίσθητο στην πεζότητα, παρουσιάζει μερικούς άλλους τύπους που διακρίνουν την πεζότητα του κειμένου και επισημαίνει τα πλεονεκτήματα και τους περιορισμούς κάθε συνάρτησης.
Υποθέτω ότι κάθε χρήστης του Excel γνωρίζει ποια συνάρτηση εκτελεί μια κάθετη αναζήτηση στο Excel. Σωστά, είναι η VLOOKUP. Ωστόσο, πολύ λίγοι γνωρίζουν ότι η VLOOKUP του Excel δεν λαμβάνει υπόψη την πεζότητα, δηλαδή αντιμετωπίζει τα πεζά και τα κεφαλαία γράμματα ως τους ίδιους χαρακτήρες.
Ακολουθεί ένα γρήγορο παράδειγμα που αποδεικνύει την αδυναμία του VLOOKUP να διακρίνει την περίπτωση κειμένου. Ας υποθέσουμε ότι έχετε "bill" στο κελί A2 και "Bill" στο A4. Ο παρακάτω τύπος θα πιάσει το "bill" επειδή έρχεται πρώτο στον πίνακα αναζήτησης και θα επιστρέψει μια αντίστοιχη τιμή από το B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Στη συνέχεια αυτού του άρθρου, θα σας δείξω έναν τρόπο να κάνετε το VLOOKUP ευαίσθητο στην πεζότητα. Θα εξερευνήσουμε επίσης μερικές άλλες συναρτήσεις που μπορούν να κάνουν μια αντιστοίχιση με ευαισθησία στην πεζότητα στο Excel.
Τύπος VLOOKUP με ευαισθησία στην πεζότητα
Όπως αναφέρθηκε παραπάνω, ένας συνηθισμένος τύπος VLOOKUP δεν αναγνωρίζει την πεζότητα των γραμμάτων. Ωστόσο, υπάρχει ένας τρόπος να κάνετε το Excel VLOOKUP ευαίσθητο στην πεζότητα, όπως φαίνεται στο παρακάτω παράδειγμα.
Ας υποθέσουμε ότι έχετε Αναγνωριστικά στοιχείων στη στήλη Α και θέλετε να αντλήσετε την τιμή και το σχόλιο του στοιχείου από τις στήλες Β και Γ. Το πρόβλημα είναι ότι τα αναγνωριστικά περιλαμβάνουν τόσο πεζά όσο και κεφαλαία γράμματα. Για παράδειγμα, οι τιμές στην Α4 (001Tvci3u) και Α5 (001Tvci3U) διαφέρουν μόνο στον τελευταίο χαρακτήρα, "u" και "U", αντίστοιχα.
Κατά την αναζήτηση του "001Tvci3 U ", μια τυπική φόρμουλα VLOOKUP παράγει 90 δολάρια που σχετίζονται με το "001Tvci3". u " επειδή προηγείται του "001Tvci3 U " στον πίνακα αναζήτησης. Αλλά αυτό δεν είναι αυτό που θέλετε, σωστά;
=VLOOKUP(F2, A2:C7, 2, FALSE)
Για να εκτελέσετε μια αναζήτηση με βάση την πεζότητα στο Excel, συνδυάζουμε τις συναρτήσεις VLOOKUP, CHOOSE και EXACT:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( lookup_value , lookup_array ), return_array ), 2, 0)Αυτή η γενική φόρμουλα λειτουργεί τέλεια σε όλες τις καταστάσεις. Μπορείτε ακόμη και να αναζητήσετε από δεξιά προς αριστερά , κάτι που ένας κανονικός τύπος VLOOKUP δεν μπορεί να κάνει. Μπράβο στον Pouriya που πρότεινε αυτή την απλή και κομψή λύση!
Στην περίπτωσή μας, οι πραγματικοί τύποι έχουν ως εξής.
Για να τραβήξετε την τιμή στο F3:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Για να λάβετε το σχόλιο F4:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Σημείωση. Σε όλες τις εκδόσεις του Excel εκτός του Excel 365, αυτό λειτουργεί μόνο ως τύπος πίνακα, οπότε θυμηθείτε να πατήσετε Ctrl + Shift + Enter για να τον ολοκληρώσετε σωστά. Στο Excel 365, λόγω της υποστήριξης δυναμικών πινάκων, λειτουργεί και ως κανονικός τύπος.
Πώς λειτουργεί αυτή η φόρμουλα:
Το βασικό μέρος που κάνει το κόλπο είναι ο τύπος CHOOSE με ένθετο EXACT:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Εδώ, η συνάρτηση EXACT συγκρίνει την τιμή στο F2 με κάθε τιμή στα A2:A7 και επιστρέφει TRUE αν είναι ακριβώς ίδιες, συμπεριλαμβανομένης της πεζότητας των γραμμάτων, και FALSE σε αντίθετη περίπτωση:
{FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
Για το index_num όρισμα της CHOOSE, χρησιμοποιούμε τη σταθερά του πίνακα {1,2}. Ως αποτέλεσμα, η συνάρτηση συνδυάζει τις λογικές τιμές από τον παραπάνω πίνακα και τις τιμές από C2:C7 σε έναν δισδιάστατο πίνακα ως εξής:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
Η συνάρτηση VLOOKUP αναλαμβάνει από εκεί και αναζητά την τιμή αναζήτησης (η οποία είναι TRUE) στην 1η στήλη του δισδιάστατου πίνακα (που αντιπροσωπεύεται από τις λογικές τιμές) και επιστρέφει μια αντιστοιχία από τη 2η στήλη, η οποία είναι η τιμή που αναζητούμε:
VLOOKUP(TRUE, {FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
Τύπος XLOOKUP με ευαισθησία στην πεζότητα
Οι συνδρομητές του Microsoft 365 μπορούν να πραγματοποιήσουν μια αναζήτηση στο Excel με βάση την πεζότητα με έναν ακόμη πιο απλό τύπο. Όπως μπορείτε να μαντέψετε, μιλάω για έναν πιο ισχυρό διάδοχο της VLOOKUP - τη συνάρτηση XLOOKUP.
Επειδή το XLOOKUP λειτουργεί σε πίνακες αναζήτησης και επιστροφής ξεχωριστά, δεν χρειαζόμαστε το τέχνασμα του δισδιάστατου πίνακα από το προηγούμενο παράδειγμα. Απλά, χρησιμοποιήστε EXACT για το lookup_array επιχείρημα:
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array , "Δεν βρέθηκε")Το τελευταίο όρισμα ("Δεν βρέθηκε") είναι προαιρετικό. Ορίζει απλώς την τιμή που θα επιστραφεί αν δεν βρεθεί καμία αντιστοιχία. Αν το παραλείψετε, τότε θα επιστραφεί ένα τυπικό σφάλμα #N/A σε περίπτωση που ο τύπος δεν βρει τίποτα.
Για τον πίνακα του δείγματός μας, αυτοί είναι οι τύποι XLOOKUP που πρέπει να χρησιμοποιηθούν.
Για να λάβετε την τιμή στο F3:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Δεν βρέθηκε")
Για να εξαγάγετε το σχόλιο F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Δεν βρέθηκε")
Πώς λειτουργεί αυτή η φόρμουλα:
Όπως και στο προηγούμενο παράδειγμα, η EXACT επιστρέφει έναν πίνακα τιμών TRUE και FALSE, όπου η τιμή TRUE αντιπροσωπεύει αντιστοιχίες με ευαισθησία στην πεζότητα. Η XLOOKUP αναζητά τον παραπάνω πίνακα για την τιμή TRUE και επιστρέφει μια αντιστοιχία από το return_array Σημειώστε ότι, εάν υπάρχουν δύο ή περισσότερες ακριβώς ίδιες τιμές στη στήλη αναζήτησης (συμπεριλαμβανομένης της πεζότητας των γραμμάτων), ο τύπος θα επιστρέψει την πρώτη αντιστοιχία που θα βρεθεί.
Περιορισμός XLOOKUP : διαθέσιμο μόνο στο Excel 365 και στο Excel 2021.
SUMPRODUCT - αναζήτηση με ευαισθησία στην πεζότητα για την επιστροφή αντίστοιχων αριθμών
Όπως καταλαβαίνετε από την επικεφαλίδα, η SUMPRODUCT είναι άλλη μια συνάρτηση του Excel που μπορεί να κάνει αναζήτηση με βάση την πεζότητα, αλλά μπορεί να επιστρέψει αριθμητικές τιμές Αν δεν είναι αυτή η περίπτωσή σας, τότε μεταβείτε στο παράδειγμα INDEX MATCH που παρέχει λύση για όλους τους τύπους δεδομένων.
Όπως πιθανότατα γνωρίζετε, η SUMPRODUCT του Excel πολλαπλασιάζει τα στοιχεία στους καθορισμένους πίνακες και επιστρέφει το άθροισμα των προϊόντων. Δεδομένου ότι θέλουμε μια αναζήτηση με ευαισθησία στην πεζότητα, χρησιμοποιούμε τη συνάρτηση EXACT για να πάρουμε τον πρώτο πίνακα:
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7)))
Δυστυχώς, η συνάρτηση SUMPRODUCT δεν μπορεί να επιστρέψει αντιστοιχίες κειμένου, καθώς οι τιμές κειμένου δεν μπορούν να πολλαπλασιαστούν. Σε αυτή την περίπτωση, θα λάβετε ένα σφάλμα #VALUE! όπως στο κελί F4 στο παρακάτω στιγμιότυπο οθόνης:
Πώς λειτουργεί αυτή η φόρμουλα:
Όπως και στο παράδειγμα VLOOKUP, η συνάρτηση EXACT ελέγχει την τιμή στο F2 με όλες τις τιμές στα A2:A7 και επιστρέφει TRUE για αντιστοιχίες με ευαισθησία στην πεζότητα, FALSE σε αντίθετη περίπτωση:
SUMPRODUCT(({{FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28}))
Στις περισσότερες φόρμουλες, το Excel αξιολογεί το TRUE σε 1 και το FALSE σε 0. Έτσι, όταν το SUMPRODUCT πολλαπλασιάζει τα στοιχεία των δύο πινάκων στις ίδιες θέσεις, όλα τα μη-συναρτήσεις (FALSE) γίνονται μηδενικά:
SUMPRODUCT({0;0;0;54;0;0})
Ως αποτέλεσμα, ο τύπος επιστρέφει έναν αριθμό από τη στήλη Β που αντιστοιχεί στην ακριβή αντιστοίχιση με βάση την πεζότητα στη στήλη Α.
Περιορισμός SUMPRODUCT : μπορεί να επιστρέψει μόνο αριθμητικές τιμές.
INDEX MATCH - αναζήτηση με βάση την πεζότητα για όλους τους τύπους δεδομένων
Τελικά, είμαστε κοντά στο να αποκτήσουμε έναν τύπο αναζήτησης χωρίς περιορισμούς, ο οποίος θα λειτουργεί σε όλες τις εκδόσεις του Excel και σε όλα τα σύνολα δεδομένων.
Αυτό το παράδειγμα έρχεται τελευταίο, όχι μόνο επειδή το καλύτερο κρατιέται για το τέλος, αλλά και επειδή οι γνώσεις που αποκτήσατε στα προηγούμενα παραδείγματα μπορεί να σας βοηθήσουν να κατανοήσετε καλύτερα τον τύπο MATCH INDEX που εξαρτάται από την πεζότητα.
Ο συνδυασμός των συναρτήσεων INDEX και MATCH χρησιμοποιείται συχνά στο Excel ως μια πιο ευέλικτη και ευπροσάρμοστη εναλλακτική λύση του VLOOKUP. Το ακόλουθο άρθρο κάνει καλή δουλειά (ελπίζω :) εξηγώντας πώς αυτές οι δύο συναρτήσεις λειτουργούν μαζί - Χρήση της INDEX MATCH αντί του VLOOKUP.
Εδώ, θα σας υπενθυμίσω απλώς τα βασικά σημεία:
- Η συνάρτηση MATCH αναζητά την τιμή αναζήτησης στον καθορισμένο πίνακα αναζήτησης και επιστρέφει τη σχετική της θέση.
- Η σχετική θέση της τιμής αναζήτησης πηγαίνει απευθείας στο row_num όρισμα της συνάρτησης INDEX, δίνοντάς της εντολή να επιστρέψει μια τιμή από αυτή τη γραμμή.
Για να αναγνωρίζει ο τύπος την περίπτωση κειμένου, πρέπει απλώς να προσθέσετε μια ακόμη συνάρτηση στον κλασικό συνδυασμό INDEX MATCH. Προφανώς, χρειάζεστε και πάλι τη συνάρτηση EXACT:
INDEX( return_array , MATCH(TRUE, EXACT( lookup_value , lookup_array ), 0))Ο πραγματικός τύπος στο F3 είναι:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Στο F4, χρησιμοποιούμε αυτό:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Να θυμάστε ότι λειτουργεί μόνο ως τύπος συστοιχίας σε όλες τις εκδόσεις εκτός του Excel 365, οπότε φροντίστε να τον εισαγάγετε πατώντας τα πλήκτρα Ctrl + Shift + Enter μαζί. Αν γίνει σωστά, ο τύπος θα περικλείεται σε αγκύλες όπως φαίνεται στο παρακάτω στιγμιότυπο:
Πώς λειτουργεί αυτή η φόρμουλα:
Όπως και σε όλα τα προηγούμενα παραδείγματα, η EXACT επιστρέφει TRUE για κάθε τιμή στο A2:A7 που ταιριάζει ακριβώς με την τιμή στο F2. Εφόσον χρησιμοποιούμε TRUE για την lookup_value της MATCH, επιστρέφει μια σχετική θέση της ακριβούς αντιστοίχισης με βάση την πεζότητα, η οποία είναι ακριβώς αυτό που χρειάζεται ο INDEX για να επιστρέψει μια αντιστοίχιση από B2:B7.
Σύνθετη φόρμουλα αναζήτησης με ευαισθησία στην πεζότητα
Ο προαναφερόμενος τύπος INDEX MATCH φαίνεται τέλειος, σωστά; Αλλά στην πραγματικότητα δεν είναι. Θα σας δείξω γιατί.
Ας υποθέσουμε ότι ένα κελί στη στήλη επιστροφής που αντιστοιχεί στην τιμή αναζήτησης είναι κενό. Τι θα επιστρέψει ο τύπος; Τίποτα. Και τώρα, ας δούμε τι πραγματικά επιστρέφει:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Ουπς, ο τύπος επιστρέφει ένα μηδέν! Ίσως, δεν είναι πραγματικά σημαντικό όταν πρόκειται αποκλειστικά για τιμές κειμένου. Ωστόσο, αν το φύλλο εργασίας σας περιέχει αριθμούς και ορισμένοι από αυτούς είναι πραγματικά μηδενικά, αυτό είναι πρόβλημα.
Στην πραγματικότητα, όλοι οι άλλοι τύποι αναζήτησης που συζητήθηκαν προηγουμένως συμπεριφέρονται με τον ίδιο τρόπο. Αλλά τώρα θέλετε έναν άψογο τύπο, έτσι δεν είναι;
Για να καταστήσετε τον τύπο INDEX MATCH με ευαισθησία στην πεζότητα απολύτως τέλειο, τον τυλίγετε στη συνάρτηση IF που ελέγχει αν ένα κελί επιστροφής είναι κενό και δεν επιστρέφει τίποτα σε αυτή την περίπτωση:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0))))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
Στον παραπάνω τύπο:
- Το "C" είναι η στήλη επιστροφής.
- Το "1" είναι ο αριθμός που μετατρέπει ένα σχετική θέση του κελιού που επιστρέφει η συνάρτηση MATCH σε ένα πραγματική διεύθυνση κυττάρου .
Για παράδειγμα, ο πίνακας αναζήτησης στη συνάρτησή μας MATCH είναι A2:A7, που σημαίνει ότι η σχετική θέση του κελιού A2 είναι "1", επειδή αυτό είναι το πρώτο κελί του πίνακα. Αλλά στην πραγματικότητα, ο πίνακας αναζήτησης αρχίζει στη γραμμή 2. Για να αντισταθμίσουμε τη διαφορά, προσθέτουμε 1, ώστε η συνάρτηση INDIRECT να επιστρέψει μια τιμή από το σωστό κελί.
Τα παρακάτω στιγμιότυπα οθόνης παρουσιάζουν τον βελτιωμένο τύπο INDEX MATCH σε δράση.
Εάν το κελί επιστροφής είναι κενό, ο τύπος δεν παράγει τίποτα (μια κενή συμβολοσειρά):
Εάν το κελί επιστροφής περιέχει μηδέν, ο τύπος επιστρέφει 0:
Αν προτιμάτε να εμφανίζετε κάποιο μήνυμα όταν ένα κελί επιστροφής είναι κενό, αντικαταστήστε μια κενή συμβολοσειρά ("") στο τελευταίο όρισμα της IF με κάποιο κείμενο:
=IF(INDIRECT("C"&(1+MATCH(TRUE, EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "Δεν υπάρχει τίποτα να επιστρέψετε, λυπάμαι.")
Κάντε VLOOKUP με ευαισθησία στην πεζότητα με εύκολο τρόπο
Οι χρήστες της Ultimate Suite for Excel έχουν στη διάθεσή τους ένα ειδικό εργαλείο που κάνει την αναζήτηση σε μεγάλους και πολύπλοκους πίνακες πιο εύκολη και χωρίς άγχος. Το καλύτερο είναι ότι η επιλογή Merge Two Tables (Συγχώνευση δύο πινάκων) έχει επιλογή για την τήρηση της πεζότητας και το παρακάτω παράδειγμα το δείχνει σε δράση.
Ας υποθέσουμε ότι θέλετε να τραβήξετε το Qty. από το Αναζήτηση στον πίνακα Κύρια πίνακα με βάση τα μοναδικά αναγνωριστικά στοιχείων:
Αυτό που πρέπει να κάνετε είναι να εκτελέσετε τον οδηγό Συγχώνευση πινάκων και να εκτελέσετε τα εξής βήματα:
- Επιλέξτε τον κύριο πίνακα στον οποίο θα εισαχθούν τα νέα δεδομένα.
- Επιλέξτε τον πίνακα αναζήτησης όπου θα αναζητήσετε τα νέα δεδομένα.
- Επιλέξτε μία ή περισσότερες βασικές στήλες (Item ID στην περίπτωσή μας). Και βεβαιωθείτε ότι έχετε ελέγξει την επιλογή Αντιστοίχιση με ευαισθησία στην πεζότητα κουτί.
Λίγο αργότερα, θα έχετε το επιθυμητό αποτέλεσμα :)
Αυτός είναι ο τρόπος αναζήτησης στο Excel λαμβάνοντας υπόψη την περίπτωση κειμένου. Σας ευχαριστώ για την ανάγνωση και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Βιβλίο ασκήσεων για κατέβασμα
Παραδείγματα VLOOKUP με ευαισθησία στην πεζότητα (.xlsx αρχείο)