Πίνακας περιεχομένων
Το σεμινάριο δείχνει πώς να χρησιμοποιείτε τη συνάρτηση VLOOKUP για να αντιγράφετε δεδομένα από άλλο φύλλο εργασίας ή βιβλίο εργασίας, να κάνετε Vlookup σε πολλαπλά φύλλα και να κάνετε δυναμική αναζήτηση για να επιστρέφετε τιμές από διαφορετικά φύλλα σε διαφορετικά κελιά.
Όταν αναζητάτε κάποιες πληροφορίες στο Excel, είναι σπάνια η περίπτωση που όλα τα δεδομένα βρίσκονται στο ίδιο φύλλο. Πιο συχνά, θα πρέπει να κάνετε αναζήτηση σε πολλά φύλλα ή ακόμα και σε διαφορετικά βιβλία εργασίας. Τα καλά νέα είναι ότι το Microsoft Excel παρέχει περισσότερους από έναν τρόπους για να το κάνετε αυτό, και τα κακά νέα είναι ότι όλοι οι τρόποι είναι λίγο πιο περίπλοκοι από έναν τυπικό τύπο VLOOKUP. Αλλά με λίγη υπομονή, μπορούμε ναθα τα καταλάβω :)
Πώς να κάνετε VLOOKUP μεταξύ δύο φύλλων
Για αρχή, ας διερευνήσουμε μια πιο απλή περίπτωση - τη χρήση του VLOOKUP για την αντιγραφή δεδομένων από άλλο φύλλο εργασίας. Μοιάζει πολύ με έναν κανονικό τύπο VLOOKUP που κάνει αναζήτηση στο ίδιο φύλλο εργασίας. Η διαφορά είναι ότι συμπεριλαμβάνετε το όνομα του φύλλου στο table_array για να πείτε στον τύπο σας σε ποιο φύλλο εργασίας βρίσκεται η περιοχή αναζήτησης.
Ο γενικός τύπος για το VLOOKUP από άλλο φύλλο έχει ως εξής:
VLOOKUP(lookup_value, Φύλλο!range , col_index_num, [range_lookup])Για παράδειγμα, ας πάρουμε τα στοιχεία πωλήσεων από το Jan αναφορά σε Περίληψη Για το σκοπό αυτό, ορίζουμε τα ακόλουθα επιχειρήματα:
- Lookup_values βρίσκονται στη στήλη Α του πίνακα Περίληψη και αναφερόμαστε στο πρώτο κελί δεδομένων, το οποίο είναι το A2.
- Table_array είναι το εύρος A2:B6 στο φύλλο Jan. Για να αναφερθείτε σε αυτό, προθέστε την αναφορά του εύρους με το όνομα του φύλλου ακολουθούμενο από το θαυμαστικό: Jan!$A$2:$B$6.
Προσέξτε ότι κλειδώνουμε την περιοχή με απόλυτες αναφορές κελιών για να μην αλλάζει κατά την αντιγραφή του τύπου σε άλλα κελιά.
Col_index_num είναι 2 επειδή θέλουμε να αντιγράψουμε μια τιμή από τη στήλη B, η οποία είναι η 2η στήλη στον πίνακα.
- Range_lookup τίθεται σε FALSE για να αναζητήσετε μια ακριβή αντιστοιχία.
Συνδυάζοντας τα επιχειρήματα, έχουμε αυτόν τον τύπο:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Σύρετε τον τύπο προς τα κάτω στη στήλη και θα έχετε αυτό το αποτέλεσμα:
Με παρόμοιο τρόπο, μπορείτε να κάνετε Vlookup δεδομένων από το Φεβρουάριος και Μαρ φύλλα:
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Συμβουλές και σημειώσεις:
- Εάν το όνομα του φύλλου περιέχει χώροι ή μη αλφαβητικοί χαρακτήρες , πρέπει να περικλείεται σε απλά εισαγωγικά, όπως 'Πωλήσεις Ιανουαρίου'!$A$2:$B$6 Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Πώς να κάνετε αναφορά σε άλλο φύλλο στο Excel.
- Αντί να πληκτρολογείτε απευθείας ένα όνομα φύλλου σε έναν τύπο, μπορείτε να μεταβείτε στο φύλλο αναζήτησης και να επιλέξετε την περιοχή εκεί. Το Excel θα εισάγει αυτόματα μια αναφορά με τη σωστή σύνταξη, γλιτώνοντάς σας από τον κόπο να ελέγξετε το όνομα και να αντιμετωπίσετε προβλήματα.
Vlookup από διαφορετικό βιβλίο εργασίας
Για VLOOKUP μεταξύ δύο βιβλίων εργασίας, συμπεριλάβετε το όνομα του αρχείου σε αγκύλες, ακολουθούμενο από το όνομα του φύλλου και το θαυμαστικό.
Για παράδειγμα, για να αναζητήσετε την τιμή A2 στο εύρος A2:B6 στο Jan φύλλο στο Sales_reports.xlsx βιβλίο εργασίας, χρησιμοποιήστε αυτόν τον τύπο:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Για πλήρεις λεπτομέρειες, ανατρέξτε στην ενότητα VLOOKUP από άλλο βιβλίο εργασίας στο Excel.
Vlookup σε πολλαπλά φύλλα με IFERROR
Όταν χρειάζεται να κάνετε αναζήτηση μεταξύ περισσότερων από δύο φύλλων, η ευκολότερη λύση είναι να χρησιμοποιήσετε το VLOOKUP σε συνδυασμό με το IFERROR. Η ιδέα είναι να φωλιάσετε πολλές συναρτήσεις IFERROR για να ελέγξετε ένα προς ένα πολλαπλά φύλλα εργασίας: αν το πρώτο VLOOKUP δεν βρει αντιστοιχία στο πρώτο φύλλο, αναζητήστε στο επόμενο φύλλο κ.ο.κ.
IFERROR(VLOOKUP(....), IFERROR(VLOOKUP(....), ..., " Δεν βρέθηκε "))Για να δείτε πώς λειτουργεί αυτή η προσέγγιση σε δεδομένα της πραγματικής ζωής, ας εξετάσουμε το ακόλουθο παράδειγμα. Παρακάτω είναι η Περίληψη πίνακα που θέλουμε να συμπληρώσουμε με τα ονόματα και τα ποσά των ειδών αναζητώντας τον αριθμό παραγγελίας στο Δύση και Ανατολικά φύλλα:
Πρώτα, θα τραβήξουμε τα στοιχεία. Για το σκοπό αυτό, δίνουμε εντολή στον τύπο VLOOKUP να αναζητήσει τον αριθμό παραγγελίας στην Α2 στο Ανατολικά φύλλο και επιστρέψτε την τιμή από τη στήλη B (2η στήλη στο table_array A2:C6). Εάν δεν βρεθεί ακριβής αντιστοιχία, τότε αναζητήστε στο Δύση φύλλο. Εάν και οι δύο Vlookups αποτύχουν, επιστρέψτε την ένδειξη "Δεν βρέθηκε".
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Δεν βρέθηκε"))
Για να επιστρέψετε το ποσό, απλώς αλλάξτε τον αριθμό του δείκτη της στήλης σε 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Δεν βρέθηκε"))
Συμβουλή. Εάν χρειάζεται, μπορείτε να καθορίσετε διαφορετικές συστοιχίες πινάκων για διαφορετικές συναρτήσεις VLOOKUP. Σε αυτό το παράδειγμα, και τα δύο φύλλα αναζήτησης έχουν τον ίδιο αριθμό γραμμών (A2:C6), αλλά τα φύλλα εργασίας σας μπορεί να έχουν διαφορετικό μέγεθος.
Vlookup σε πολλαπλά βιβλία εργασίας
Για να κάνετε Vlookup μεταξύ δύο ή περισσότερων βιβλίων εργασίας, περικλείστε το όνομα του βιβλίου εργασίας σε αγκύλες και βάλτε το πριν από το όνομα του φύλλου. Για παράδειγμα, μπορείτε να κάνετε Vlookup στο δύο διαφορετικά αρχεία ( Βιβλίο1 και Βιβλίο2 ) με έναν μόνο τύπο:
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE), "Δεν βρέθηκε"))
Κάντε τον αριθμό του δείκτη στήλης δυναμικό για Vlookup πολλαπλών στηλών
Σε περίπτωση που πρέπει να επιστρέψετε δεδομένα από διάφορες στήλες, κάνοντας col_index_num Η δυναμική θα σας γλιτώσει χρόνο. Πρέπει να γίνουν μερικές προσαρμογές:
- Για το col_index_num όρισμα, χρησιμοποιήστε τη συνάρτηση COLUMNS που επιστρέφει τον αριθμό των στηλών σε έναν καθορισμένο πίνακα: COLUMNS($A$1:B$1). (Η συντεταγμένη της γραμμής δεν έχει σημασία, μπορεί να είναι οποιαδήποτε γραμμή.)
- Στο lookup_value όρισμα, κλειδώστε την αναφορά στη στήλη με το σύμβολο $ ($A2), ώστε να παραμένει σταθερή κατά την αντιγραφή του τύπου σε άλλες στήλες.
Ως αποτέλεσμα, έχετε ένα είδος δυναμικού τύπου που εξάγει τις αντίστοιχες τιμές από διαφορετικές στήλες, ανάλογα με τη στήλη στην οποία αντιγράφεται ο τύπος:
=IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))
Όταν εισάγεται στη στήλη B, η COLUMNS($A$1:B$1) αξιολογείται ως 2 και λέει στο VLOOKUP να επιστρέψει μια τιμή από τη 2η στήλη του πίνακα.
Όταν αντιγράφετε στη στήλη C (δηλ. έχετε σύρει τον τύπο από το B2 στο C2), το B$1 αλλάζει σε C$1 επειδή η αναφορά στη στήλη είναι σχετική. Κατά συνέπεια, το COLUMNS($A$1:C$1) αξιολογείται σε 3 αναγκάζοντας το VLOOKUP να επιστρέψει μια τιμή από την 3η στήλη.
Αυτός ο τύπος λειτουργεί εξαιρετικά για 2 - 3 φύλλα αναζήτησης. Αν έχετε περισσότερα, τα επαναλαμβανόμενα IFERROR γίνονται πολύ δυσκίνητα. Το επόμενο παράδειγμα δείχνει μια λίγο πιο περίπλοκη αλλά πολύ πιο κομψή προσέγγιση.
Vlookup πολλαπλά φύλλα με INDIRECT
Ένας ακόμη τρόπος για να κάνετε Vlookup μεταξύ πολλαπλών φύλλων στο Excel είναι να χρησιμοποιήσετε έναν συνδυασμό των συναρτήσεων VLOOKUP και INDIRECT. Αυτή η μέθοδος απαιτεί λίγη προετοιμασία, αλλά στο τέλος θα έχετε έναν πιο συμπαγή τύπο για Vlookup σε οποιοδήποτε αριθμό φύλλων.
Ένας γενικός τύπος Vlookup μεταξύ των φύλλων έχει ως εξής:
VLOOKUP( lookup_value , INDIRECT("'"&INDEX( Lookup_sheets , MATCH(1, --(COUNTIF(INDIRECT("'" &, Lookup_sheets & "'! lookup_range "), lookup_value )>0), 0)) & "'! table_array "), col_index_num , FALSE)Πού:
- Lookup_sheets - μια ονομαστική περιοχή που αποτελείται από τα ονόματα των φύλλων αναζήτησης.
- Lookup_value - η τιμή για την οποία θα γίνει αναζήτηση.
- Lookup_range - το εύρος των στηλών στα φύλλα αναζήτησης όπου θα αναζητηθεί η τιμή αναζήτησης.
- Table_array - το εύρος δεδομένων στα φύλλα αναζήτησης.
- Col_index_num - ο αριθμός της στήλης του πίνακα από την οποία θα επιστραφεί μια τιμή.
Για να λειτουργήσει σωστά ο τύπος, λάβετε υπόψη σας τις ακόλουθες προειδοποιήσεις:
- Πρόκειται για έναν τύπο πίνακα, ο οποίος πρέπει να συμπληρωθεί με το ταυτόχρονο πάτημα των πλήκτρων Ctrl + Shift + Enter.
- Όλα τα φύλλα πρέπει να έχουν το ίδια σειρά στηλών .
- Καθώς χρησιμοποιούμε έναν πίνακα για όλα τα φύλλα αναζήτησης, καθορίστε το μεγαλύτερο εύρος εάν τα φύλλα σας έχουν διαφορετικό αριθμό γραμμών.
Πώς να χρησιμοποιήσετε τον τύπο για Vlookup σε όλα τα φύλλα
Για να κάνετε Vlookup σε πολλά φύλλα ταυτόχρονα, εκτελέστε τα εξής βήματα:
- Γράψτε όλα τα ονόματα των φύλλων αναζήτησης κάπου στο βιβλίο εργασίας σας και ονομάστε αυτή την περιοχή ( Lookup_sheets στην περίπτωσή μας).
- αναζήτηση της τιμής A2 ( lookup_value )
- στην περιοχή A2:A6 ( lookup_range ) σε τέσσερα φύλλα εργασίας ( Ανατολικά , Βόρεια , Νότια και Δύση ), και
- τραβήξτε τις αντίστοιχες τιμές από τη στήλη Β, η οποία είναι η στήλη 2 ( col_index_num ) στην περιοχή δεδομένων A2:C6 ( table_array ).
Με τα παραπάνω επιχειρήματα, ο τύπος παίρνει αυτή τη μορφή:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Παρατηρήστε ότι κλειδώνουμε και τις δύο περιοχές ($A$2:$A$6 και $A$2:$C$6) με απόλυτες αναφορές κελιών.
Ως αποτέλεσμα, έχουμε τον τύπο για να αναζητήσουμε τον αριθμό παραγγελίας σε 4 φύλλα και να ανακτήσουμε το αντίστοιχο στοιχείο. Εάν δεν βρεθεί ένας συγκεκριμένος αριθμός παραγγελίας, εμφανίζεται ένα σφάλμα #N/A όπως στη γραμμή 14:
Για να επιστρέψετε το ποσό, απλά αντικαταστήστε το 2 με το 3 στο πεδίο col_index_num όρισμα, καθώς τα ποσά βρίσκονται στην 3η στήλη του πίνακα:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)
Αν θέλετε να αντικαταστήσετε την τυπική σημείωση σφάλματος #N/A με το δικό σας κείμενο, τυλίξτε τον τύπο στη συνάρτηση IFNA:
=IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Δεν βρέθηκε")
Vlookup πολλαπλών φύλλων μεταξύ βιβλίων εργασίας
Αυτός ο γενικός τύπος (ή οποιαδήποτε παραλλαγή του) μπορεί επίσης να χρησιμοποιηθεί για να κάνει Vlookup σε πολλαπλά φύλλα σε ένα διαφορετικό βιβλίο εργασίας Για το σκοπό αυτό, συνδέστε το όνομα του βιβλίου εργασίας μέσα στο INDIRECT όπως φαίνεται στον παρακάτω τύπο:
=IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" &? INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6")), $A2)>0), 0))) & "'!$A$2:$C$6"), 2, FALSE), "Δεν βρέθηκε")
Vlookup μεταξύ φύλλων και επιστροφή πολλαπλών στηλών
Εάν θέλετε να αντλήσετε δεδομένα από διάφορες στήλες, μια τύπος συστοιχίας πολλαπλών κελιών μπορεί να το κάνει αυτό με μια κίνηση. Για να δημιουργήσετε έναν τέτοιο τύπο, δώστε μια σταθερά πίνακα για το col_index_num επιχείρημα.
Σε αυτό το παράδειγμα, επιθυμούμε να επιστρέψουμε τα ονόματα των στοιχείων (στήλη B) και τα ποσά (στήλη C), τα οποία είναι η 2η και η 3η στήλη του πίνακα, αντίστοιχα. Έτσι, ο απαιτούμενος πίνακας είναι {2,3}.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)
Για να εισαγάγετε σωστά τον τύπο σε πολλαπλά κελιά, πρέπει να κάνετε τα εξής:
- Στην πρώτη γραμμή, επιλέξτε όλα τα κελιά που θα συμπληρωθούν (B2:C2 στο παράδειγμά μας).
- Πληκτρολογήστε τον τύπο και πατήστε Ctrl + Shift + Enter . Αυτό εισάγει τον ίδιο τύπο στα επιλεγμένα κελιά, ο οποίος θα επιστρέφει διαφορετική τιμή σε κάθε στήλη.
- Σύρετε τον τύπο προς τα κάτω στις υπόλοιπες γραμμές.
Πώς λειτουργεί αυτή η φόρμουλα
Για να κατανοήσουμε καλύτερα τη λογική, ας αναλύσουμε αυτόν τον βασικό τύπο στις επιμέρους συναρτήσεις:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Δουλεύοντας από μέσα προς τα έξω, η φόρμουλα έχει ως εξής:
COUNTIF και INDIRECT
Με λίγα λόγια, η INDIRECT δημιουργεί τις αναφορές για όλα τα φύλλα αναζήτησης και η COUNTIF μετρά τις εμφανίσεις της τιμής αναζήτησης (A2) σε κάθε φύλλο:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Πιο αναλυτικά:
Πρώτα, συνδέετε το όνομα της περιοχής (Lookup_sheets) και την αναφορά της περιοχής ($A$2:$A$6), προσθέτοντας αποσιωπητικά και θαυμαστικό στα σωστά σημεία για να δημιουργήσετε μια εξωτερική αναφορά, και τροφοδοτείτε τη συμβολοσειρά κειμένου που προκύπτει στη συνάρτηση INDIRECT για να ανατρέξετε δυναμικά στα φύλλα αναζήτησης:
INDIRECT({"'East'!$A$2:$A$6", "'South'!$A$2:$A$6", "'North'!$A$2:$A$6", "'West'!$A$2:$A$6"})
Η COUNTIF ελέγχει κάθε κελί στην περιοχή A2:A6 σε κάθε φύλλο αναζήτησης με την τιμή στο A2 στο κύριο φύλλο και επιστρέφει τον αριθμό των αντιστοιχιών για κάθε φύλλο. Στο σύνολο δεδομένων μας, ο αριθμός σειράς στο A2 (101) βρίσκεται στο Δύση φύλλο, το οποίο είναι το 4ο στην ονομαζόμενη περιοχή, οπότε η COUNTIF επιστρέφει αυτόν τον πίνακα:
{0;0;0;1}
Στη συνέχεια, συγκρίνετε κάθε στοιχείο του παραπάνω πίνακα με το 0:
--({0; 0; 0; 0; 1}>0)
Αυτό δίνει έναν πίνακα από τιμές TRUE (μεγαλύτερες από 0) και FALSE (ίσες με 0), τις οποίες μετατρέπετε σε 1 και 0 χρησιμοποιώντας ένα διπλό μοναδιαίο (--), και παίρνετε τον ακόλουθο πίνακα ως αποτέλεσμα:
{0; 0; 0; 1}
Αυτή η λειτουργία είναι μια πρόσθετη προφύλαξη για να αντιμετωπιστεί μια κατάσταση όταν ένα φύλλο αναζήτησης περιέχει πολλές εμφανίσεις της τιμής αναζήτησης, οπότε η COUNTIF θα επέστρεφε έναν αριθμό μεγαλύτερο από 1, ενώ θέλουμε μόνο 1 και 0 στον τελικό πίνακα (σε λίγο θα καταλάβετε γιατί).
Μετά από όλους αυτούς τους μετασχηματισμούς, ο τύπος μας έχει ως εξής:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX και MATCH
Σε αυτό το σημείο παρεμβαίνει ένας κλασικός συνδυασμός INDEX MATCH:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;0;1}, 0))
Η συνάρτηση MATCH που έχει ρυθμιστεί για ακριβή αντιστοίχιση (0 στο τελευταίο όρισμα) αναζητά την τιμή 1 στον πίνακα {0;0;0;0;1} και επιστρέφει τη θέση της, η οποία είναι 4:
INDEX(Lookup_sheets, 4)
Η συνάρτηση INDEX χρησιμοποιεί τον αριθμό που επιστρέφει η MATCH ως όρισμα για τον αριθμό γραμμής (row_num) και επιστρέφει την 4η τιμή στην ονομασμένη περιοχή. Lookup_sheets , το οποίο είναι Δύση .
Έτσι, ο τύπος μειώνεται περαιτέρω σε:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP και INDIRECT
Η συνάρτηση INDIRECT επεξεργάζεται τη συμβολοσειρά κειμένου στο εσωτερικό της:
INDIRECT("'"& "West"&"'!$A$2:$C$6")
Και το μετατρέπει σε μια αναφορά που πηγαίνει στο table_array επιχείρημα του VLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Τέλος, αυτός ο πολύ συνηθισμένος τύπος VLOOKUP αναζητά την τιμή A2 στην πρώτη στήλη του εύρους A2:C6 στο Δύση φύλλο και επιστρέφει μια αντιστοιχία από τη 2η στήλη. Αυτό είναι όλο!
Δυναμικό VLOOKUP για την επιστροφή δεδομένων από πολλαπλά φύλλα σε διαφορετικά κελιά
Κατ' αρχάς, ας ορίσουμε τι ακριβώς σημαίνει η λέξη "δυναμική" σε αυτό το πλαίσιο και πώς αυτός ο τύπος θα είναι διαφορετικός από τους προηγούμενους.
Σε περίπτωση που έχετε μεγάλα κομμάτια δεδομένων στην ίδια μορφή που είναι κατανεμημένα σε πολλά λογιστικά φύλλα, μπορεί να θέλετε να εξάγετε πληροφορίες από διαφορετικά φύλλα σε διαφορετικά κελιά. Η παρακάτω εικόνα απεικονίζει την έννοια:
Σε αντίθεση με τις προηγούμενες φόρμουλες που ανέκτησαν μια τιμή από ένα συγκεκριμένο φύλλο με βάση ένα μοναδικό αναγνωριστικό, αυτή τη φορά θέλουμε να εξάγουμε τιμές από πολλά φύλλα ταυτόχρονα.
Υπάρχουν δύο διαφορετικές λύσεις για την εργασία αυτή. Και στις δύο περιπτώσεις, πρέπει να κάνετε μια μικρή προπαρασκευαστική εργασία και να δημιουργήσετε ονομαστικές περιοχές για τα κελιά δεδομένων σε κάθε φύλλο αναζήτησης. Για το συγκεκριμένο παράδειγμα, ορίσαμε τις ακόλουθες περιοχές:
- East_Sales - A2:B6 στο ανατολικό φύλλο
- Βόρεια_Πωλήσεις - A2:B6 στο φύλλο North
- South_Sales - A2:B6 στο νότιο φύλλο
- West_Sales - A2:B6 στο δυτικό φύλλο
VLOOKUP και ένθετα IFs
Εάν έχετε έναν εύλογο αριθμό φύλλων προς αναζήτηση, μπορείτε να χρησιμοποιήσετε ένθετες συναρτήσεις IF για να επιλέξετε το φύλλο με βάση τις λέξεις-κλειδιά στα προκαθορισμένα κελιά (κελιά B1 έως D1 στην περίπτωσή μας).
Με την τιμή αναζήτησης στο Α2, ο τύπος είναι ο εξής:
=VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)
Μεταφρασμένο στα αγγλικά, το τμήμα του IF έχει ως εξής:
Εάν το Β1 είναι Ανατολικά , κοιτάξτε στην περιοχή με το όνομα East_Sales ; αν το Β1 είναι Βόρεια , κοιτάξτε στην περιοχή με το όνομα Βόρεια_Πωλήσεις ; αν το Β1 είναι Νότια , κοιτάξτε στην περιοχή με το όνομα South_Sales ; και αν το Β1 είναι Δύση , κοιτάξτε στην περιοχή με το όνομα West_Sales .
Το εύρος που επιστρέφεται από το IF φτάνει μέχρι το table_array του VLOOKUP, το οποίο αντλεί μια αντίστοιχη τιμή από τη 2η στήλη του αντίστοιχου φύλλου.
Η έξυπνη χρήση μικτών αναφορών για την τιμή αναζήτησης ($A2 - απόλυτη στήλη και σχετική γραμμή) και η λογική δοκιμή του IF (B$1 - σχετική στήλη και απόλυτη γραμμή) επιτρέπει την αντιγραφή του τύπου σε άλλα κελιά χωρίς αλλαγές - το Excel προσαρμόζει αυτόματα τις αναφορές με βάση τη σχετική θέση μιας γραμμής και μιας στήλης.
Έτσι, εισάγουμε τον τύπο στο Β2, τον αντιγράφουμε δεξιά και κάτω σε όσες στήλες και γραμμές χρειάζεται και παίρνουμε το ακόλουθο αποτέλεσμα:
ΈΜΜΕΣΗ ΕΠΙΣΚΌΠΗΣΗ
Όταν εργάζεστε με πολλά φύλλα, τα πολλαπλά ένθετα επίπεδα θα μπορούσαν να κάνουν τον τύπο πολύ μακρύ και δυσανάγνωστο. Ένας πολύ καλύτερος τρόπος είναι να δημιουργήσετε ένα δυναμικό εύρος vlookup με τη βοήθεια της INDIRECT:
=VLOOKUP($A2, INDIRECT(B$1&"_Πωλήσεις"), 2, FALSE)
Εδώ, συνδέουμε την αναφορά στο κελί που περιέχει ένα μοναδικό μέρος της ονομαστικής περιοχής (B1) και το κοινό μέρος (_Sales). Αυτό παράγει μια συμβολοσειρά κειμένου όπως "East_Sales", την οποία το INDIRECT μετατρέπει στο όνομα της περιοχής που είναι κατανοητό από το Excel.
Ως αποτέλεσμα, λαμβάνετε μια συμπαγή φόρμουλα που λειτουργεί υπέροχα σε οποιοδήποτε αριθμό φύλλων:
Αυτός είναι ο τρόπος με τον οποίο μπορείτε να κάνετε Vlookup μεταξύ φύλλων και αρχείων στο Excel. Σας ευχαριστώ για την ανάγνωση και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Βιβλίο ασκήσεων για κατέβασμα
Παραδείγματα πολλαπλών φύλλων Vlookup (.xlsx αρχείο)