Πίνακας περιεχομένων
Σε αυτό το σεμινάριο, θα εξετάσουμε πώς να χρησιμοποιούμε τις συναρτήσεις IFERROR και VLOOKUP μαζί για να παγιδεύουμε και να χειριζόμαστε διάφορα σφάλματα. Επιπλέον, θα μάθετε πώς να κάνετε διαδοχικές vlookups στο Excel με την ένθεση πολλαπλών συναρτήσεων IFERROR η μία πάνω στην άλλη.
Excel VLOOKUP και IFERROR - αυτές οι δύο συναρτήσεις μπορεί να είναι αρκετά δύσκολο να κατανοηθούν ξεχωριστά, πόσο μάλλον όταν συνδυάζονται. Σε αυτό το άρθρο, θα βρείτε μερικά εύκολα παραδείγματα που αφορούν κοινές χρήσεις και απεικονίζουν με σαφήνεια τη λογική των τύπων.
Αν δεν έχετε μεγάλη εμπειρία με τις συναρτήσεις IFERROR και VLOOKUP, ίσως είναι καλή ιδέα να επανεξετάσετε πρώτα τα βασικά τους στοιχεία ακολουθώντας τους παραπάνω συνδέσμους.
Τύπος IFERROR VLOOKUP για τον χειρισμό του #N/A και άλλων σφαλμάτων
Όταν το Excel Vlookup αποτυγχάνει να βρει μια τιμή αναζήτησης, εμφανίζει ένα σφάλμα #N/A, όπως αυτό:
Ανάλογα με τις ανάγκες της επιχείρησής σας, μπορεί να θέλετε να αποκρύψετε το σφάλμα με δικό σας κείμενο, μηδέν ή ένα κενό κελί.
Παράδειγμα 1. IFERROR με τύπο VLOOKUP για την αντικατάσταση των σφαλμάτων με το δικό σας κείμενο
Αν θέλετε να αντικαταστήσετε την τυπική σημείωση σφάλματος με το δικό σας προσαρμοσμένο κείμενο, τυλίξτε τον τύπο VLOOKUP σε IFERROR και πληκτρολογήστε οποιοδήποτε κείμενο θέλετε στο 2ο όρισμα ( value_if_error ), για παράδειγμα "Δεν βρέθηκε":
IFERROR(VLOOKUP( ... ), "Δεν βρέθηκε")Με την τιμή αναζήτησης στο B2 στον κύριο πίνακα και την περιοχή αναζήτησης A2:B4 στον πίνακα Lookup, ο τύπος παίρνει την ακόλουθη μορφή:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Δεν βρέθηκε")
Το παρακάτω στιγμιότυπο οθόνης δείχνει τον τύπο IFERROR VLOOKUP του Excel σε δράση:
Το αποτέλεσμα φαίνεται πολύ πιο κατανοητό και πολύ λιγότερο τρομακτικό, έτσι δεν είναι;
Με παρόμοιο τρόπο, μπορείτε να χρησιμοποιήσετε το INDEX MATCH μαζί με το IFERROR:
=IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Not found")
Ο τύπος IFERROR INDEX MATCH είναι ιδιαίτερα χρήσιμος όταν θέλετε να αντλήσετε τιμές από μια στήλη που βρίσκεται στα αριστερά της στήλης αναζήτησης (αριστερή αναζήτηση) και να επιστρέψετε το δικό σας κείμενο όταν δεν βρεθεί τίποτα.
Παράδειγμα 2. IFERROR με VLOOKUP για να επιστρέφει κενό ή 0 εάν δεν έχει βρεθεί τίποτα
Αν δεν θέλετε να εμφανίσετε τίποτα όταν η τιμή αναζήτησης δεν βρίσκεται, βάλτε το IFERROR να εμφανίσει ένα μήνυμα κενή συμβολοσειρά (""):
IFERROR(VLOOKUP( ... ),"")Στο παράδειγμά μας, ο τύπος έχει ως εξής:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")
Όπως μπορείτε να δείτε, δεν επιστρέφει τίποτα όταν η τιμή αναζήτησης δεν βρίσκεται στη λίστα αναζήτησης.
Αν θέλετε να αντικαταστήσετε το σφάλμα με το μηδενική τιμή , βάλτε 0 στο τελευταίο όρισμα:
=IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)
Προσοχή! Η συνάρτηση IFERROR του Excel συλλαμβάνει όλα τα είδη σφαλμάτων, όχι μόνο #N/A. Είναι καλή ή κακή; Όλα εξαρτώνται από τον στόχο σας. Αν θέλετε να καλύψετε όλα τα πιθανά σφάλματα, η Vlookup IFERROR είναι ο σωστός τρόπος. Αλλά μπορεί να είναι μια μη συνετή τεχνική σε πολλές περιπτώσεις.
Για παράδειγμα, αν έχετε δημιουργήσει μια περιοχή με όνομα για τα δεδομένα του πίνακα σας και έχετε γράψει λάθος το όνομα αυτό στον τύπο Vlookup, το IFERROR θα πιάσει ένα σφάλμα #NAME? και θα το αντικαταστήσει με το "Δεν βρέθηκε" ή οποιοδήποτε άλλο κείμενο που θα δώσετε. Ως αποτέλεσμα, μπορεί να μην καταλάβετε ποτέ ότι ο τύπος σας παράγει λάθος αποτελέσματα εκτός αν εντοπίσετε το τυπογραφικό λάθος μόνοι σας. Σε μια τέτοια περίπτωση, μια πιο λογική προσέγγιση θα ήταν η παγίδευση μόνο των σφαλμάτων #N/A.Για το σκοπό αυτό, χρησιμοποιήστε τον τύπο IFNA Vlookup στο Excel 2013 και νεότερες εκδόσεις, IF ISNA VLOOKUP σε όλες τις εκδόσεις του Excel.
Το συμπέρασμα είναι: να είστε πολύ προσεκτικοί όταν επιλέγετε έναν σύντροφο για τον τύπο VLOOKUP :)
Φωλιά IFERROR μέσα στο VLOOKUP για να βρίσκετε πάντα κάτι
Φανταστείτε την εξής κατάσταση: αναζητάτε μια συγκεκριμένη τιμή σε μια λίστα και δεν τη βρίσκετε. Τι επιλογές έχετε; Είτε να λάβετε ένα σφάλμα N/A είτε να εμφανίσετε το δικό σας μήνυμα. Στην πραγματικότητα, υπάρχει και μια τρίτη επιλογή - αν το πρωταρχικό σας vlookup σκοντάψει, τότε αναζητήστε κάτι άλλο που σίγουρα υπάρχει!
Συνεχίζοντας το παράδειγμά μας, ας δημιουργήσουμε ένα είδος πίνακα οργάνων για τους χρήστες μας που θα τους εμφανίζει τον εσωτερικό αριθμό ενός συγκεκριμένου γραφείου. Κάτι τέτοιο:
Πώς μπορείτε να αντλήσετε το εσωτερικό τηλέφωνο από τη στήλη Β με βάση τον αριθμό γραφείου στο D2; Με αυτόν τον κανονικό τύπο Vlookup:
=VLOOKUP($D$2,$A$2:$B$7,2,FALSE)
Και θα λειτουργήσει όμορφα εφόσον οι χρήστες σας εισάγουν έναν έγκυρο αριθμό στο D2. Τι γίνεται όμως αν ένας χρήστης εισάγει κάποιον αριθμό που δεν υπάρχει; Σε αυτή την περίπτωση, αφήστε τους να καλέσουν το κεντρικό γραφείο! Για αυτό, ενσωματώνετε τον παραπάνω τύπο στο αξία όρισμα του IFERROR, και βάλτε ένα άλλο Vlookup στο value_if_error επιχείρημα.
Η πλήρης φόρμουλα είναι λίγο μεγάλη, αλλά λειτουργεί τέλεια:
=IFERROR(VLOOKUP("office"&$D$2,$A$2:$B$7,2,FALSE),VLOOKUP("central office",$A$2:$B$7,2,FALSE))
Εάν βρεθεί ο αριθμός γραφείου, ο χρήστης λαμβάνει τον αντίστοιχο αριθμό επέκτασης:
Εάν δεν βρεθεί ο αριθμός γραφείου, εμφανίζεται η επέκταση του κεντρικού γραφείου:
Για να κάνετε τον τύπο λίγο πιο συμπαγή, μπορείτε να χρησιμοποιήσετε μια διαφορετική προσέγγιση:
Πρώτον, ελέγξτε αν ο αριθμός στο D2 υπάρχει στη στήλη αναζήτησης (παρατηρήστε ότι ορίσαμε το col_index_num σε 1 για να αναζητήσει ο τύπος και να επιστρέψει την τιμή από τη στήλη Α): VLOOKUP(D2,$A$2:$B$7,1,FALSE)
Εάν δεν βρεθεί ο καθορισμένος αριθμός γραφείου, τότε αναζητούμε τη συμβολοσειρά "κεντρικό γραφείο", η οποία βρίσκεται σίγουρα στη λίστα αναζήτησης. Για το σκοπό αυτό, τυλίγετε την πρώτη VLOOKUP σε IFERROR και φωλιάζετε όλο αυτό το συνδυασμό μέσα σε μια άλλη συνάρτηση VLOOKUP:
=VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "central office"),$A$2:$B$7,2)
Λοιπόν, μια ελαφρώς διαφορετική φόρμουλα, το ίδιο αποτέλεσμα:
Αλλά ποιος είναι ο λόγος να αναζητήσετε το "κεντρικό γραφείο", θα με ρωτήσετε. Γιατί να μην παρέχετε τον αριθμό του εσωτερικού αριθμού απευθείας στο IFERROR; Επειδή ο εσωτερικός αριθμός μπορεί να αλλάξει κάποια στιγμή στο μέλλον. Αν συμβεί αυτό, θα πρέπει να ενημερώσετε τα δεδομένα σας μόνο μία φορά στον πίνακα προέλευσης, χωρίς να ανησυχείτε για την ενημέρωση κάθε μιας από τις φόρμουλες VLOOKUP.
Πώς να κάνετε διαδοχικά VLOOKUPs στο Excel
Σε περιπτώσεις που πρέπει να εκτελέσετε τη λεγόμενη διαδοχική ή chained Vlookups στο Excel ανάλογα με το αν μια προηγούμενη αναζήτηση πέτυχε ή απέτυχε, φωλιάστε δύο ή περισσότερες συναρτήσεις IFERROR για να εκτελέσετε τις Vlookups σας μία προς μία:
IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), IFERROR(VLOOKUP( ... ), "Δεν βρέθηκε")))Ο τύπος λειτουργεί με την ακόλουθη λογική:
Εάν το πρώτο VLOOKUP δεν βρει τίποτα, το πρώτο IFERROR παγιδεύει ένα σφάλμα και εκτελεί ένα άλλο VLOOKUP. Εάν το δεύτερο VLOOKUP αποτύχει, το δεύτερο IFERROR παγιδεύει ένα σφάλμα και εκτελεί το τρίτο VLOOKUP κ.ο.κ. Εάν όλα τα VLOOKUP σκοντάφτουν, το τελευταίο IFERROR επιστρέφει το μήνυμά σας.
Αυτός ο ένθετος τύπος IFERROR είναι ιδιαίτερα χρήσιμος όταν πρέπει να κάνετε Vlookup σε πολλαπλά φύλλα όπως φαίνεται στο παρακάτω παράδειγμα.
Ας υποθέσουμε ότι έχετε τρεις λίστες με ομοιογενή δεδομένα σε τρία διαφορετικά φύλλα εργασίας (αριθμοί γραφείων σε αυτό το παράδειγμα) και θέλετε να πάρετε μια επέκταση για έναν συγκεκριμένο αριθμό.
Αν υποθέσουμε ότι η τιμή αναζήτησης βρίσκεται στο κελί A2 στο τρέχον φύλλο και η περιοχή αναζήτησης είναι A2:B5 σε 3 διαφορετικά φύλλα εργασίας (βόρεια, νότια και δυτικά), ο ακόλουθος τύπος λειτουργεί άψογα:
=IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "Not found")))
Έτσι, ο τύπος "chained Vlookups" ψάχνει σε τρία διαφορετικά φύλλα με τη σειρά που τα έχουμε τοποθετήσει στον τύπο και φέρνει την πρώτη αντιστοιχία που βρίσκει:
Έτσι χρησιμοποιείτε το IFERROR με το VLOOKUP στο Excel. Σας ευχαριστώ για την ανάγνωση και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Διαθέσιμες λήψεις
Παραδείγματα τύπου VLOOKUP του Excel IFERROR