Τύπος Excel: Ταχύτερο VLOOKUP με 2 VLOOKUPS -

Πίνακας περιεχομένων

Γενική φόρμουλα

=IF(VLOOKUP(id,data,1,TRUE)=id, VLOOKUP(id,data,col,TRUE), NA())

Περίληψη

Με μεγάλα σύνολα δεδομένων, το ακριβές ταίριασμα VLOOKUP μπορεί να είναι οδυνηρά αργό, αλλά μπορείτε να κάνετε το VLOOKUP να ελαφρύνει γρήγορα χρησιμοποιώντας δύο VLOOKUPS, όπως εξηγείται παρακάτω.

Σημειώσεις:

  1. Εάν έχετε ένα μικρότερο σύνολο δεδομένων, αυτή η προσέγγιση είναι υπερβολική. Χρησιμοποιήστε το μόνο με μεγάλα σύνολα δεδομένων όταν μετράει πραγματικά η ταχύτητα.
  2. Πρέπει να ταξινομήσετε τα δεδομένα ανά τιμή αναζήτησης για να λειτουργήσει αυτό το τέχνασμα.
  3. Αυτό το παράδειγμα χρησιμοποιεί ονομασμένες περιοχές. Εάν δεν θέλετε να χρησιμοποιήσετε ονομασμένες περιοχές, χρησιμοποιήστε απόλυτες αναφορές.

Το ακριβές παιχνίδι VLOOKUP είναι αργό

Όταν χρησιμοποιείτε το VLOOKUP σε "λειτουργία ακριβούς αντιστοίχισης" σε ένα μεγάλο σύνολο δεδομένων, μπορεί πραγματικά να επιβραδύνει τον χρόνο υπολογισμού σε ένα φύλλο εργασίας. Με, για παράδειγμα, 50.000 εγγραφές ή 100.000 εγγραφές, ο υπολογισμός μπορεί να διαρκέσει λίγα λεπτά.

Η ακριβής αντιστοίχιση ορίζεται με την παροχή FALSE ή μηδέν ως το τέταρτο όρισμα:

=VLOOKUP(val,data,col,FALSE)

Ο λόγος που το VLOOKUP σε αυτή τη λειτουργία είναι αργό είναι επειδή πρέπει να ελέγχει κάθε εγγραφή στο σύνολο δεδομένων έως ότου βρεθεί ένας αγώνας. Αυτό μερικές φορές αναφέρεται ως γραμμική αναζήτηση.

Το VLOOKUP που αντιστοιχεί κατά προσέγγιση είναι πολύ γρήγορο

Στη λειτουργία αντιστοίχισης κατά προσέγγιση, το VLOOKUP είναι εξαιρετικά γρήγορο. Για να χρησιμοποιήσετε το VLOOKUP κατά προσέγγιση αντιστοίχισης, πρέπει να ταξινομήσετε τα δεδομένα σας κατά την πρώτη στήλη (τη στήλη αναζήτησης) και, στη συνέχεια, να καθορίσετε το TRUE για το 4ο όρισμα

=VLOOKUP(val,data,col,TRUE)

(Το VLOOKUP είναι προεπιλεγμένο στο true, το οποίο είναι μια τρομακτική προεπιλογή, αλλά αυτή είναι μια άλλη ιστορία).

Με πολύ μεγάλα σύνολα δεδομένων, η αλλαγή σε VLOOKUP κατά προσέγγιση αντιστοιχεί μπορεί να σημαίνει δραματική αύξηση ταχύτητας.

Λοιπόν, όχι-brainer, σωστά; Απλώς ταξινομήστε τα δεδομένα, χρησιμοποιήστε κατά προσέγγιση αντιστοίχιση και τελειώσατε.

Όχι τόσο γρήγορα (heh).

Το πρόβλημα με το VLOOKUP στη λειτουργία "κατά προσέγγιση αντιστοίχιση" είναι αυτό: Το VLOOKUP δεν θα εμφανίσει σφάλμα εάν δεν υπάρχει η τιμή αναζήτησης. Το χειρότερο, το αποτέλεσμα μπορεί να φαίνεται εντελώς φυσιολογικό, παρόλο που είναι εντελώς λάθος (βλ. Παραδείγματα). Όχι κάτι που θέλετε να εξηγήσετε στο αφεντικό σας.

Η λύση είναι να χρησιμοποιήσετε το VLOOKUP δύο φορές, και τις δύο φορές σε κατάσταση αντιστοίχισης κατά προσέγγιση:

=IF(VLOOKUP(id,data,1,TRUE)=id, VLOOKUP(id,data,col,TRUE), NA())

Εξήγηση

Η πρώτη εμφάνιση του VLOOKUP αναζητά απλώς την τιμή αναζήτησης (το αναγνωριστικό σε αυτό το παράδειγμα):

=IF(VLOOKUP(id,data,1,TRUE)=id

και επιστρέφει ΑΛΗΘΕΙΑ μόνο όταν βρεθεί η τιμή αναζήτησης. Σε αυτήν την περίπτωση,
ο τύπος εκτελεί ξανά το VLOOKUP σε λειτουργία αντιστοίχισης κατά προσέγγιση για να ανακτήσει μια τιμή από αυτόν τον πίνακα:

VLOOKUP(id,data,col,TRUE)

Δεν υπάρχει κίνδυνος να λείπει μια τιμή αναζήτησης, καθώς το πρώτο μέρος του τύπου έχει ήδη ελεγχθεί για να βεβαιωθείτε ότι είναι εκεί.

Εάν δεν βρεθεί η τιμή αναζήτησης, εκτελείται το τμήμα "value if FALSE" της συνάρτησης IF και μπορείτε να επιστρέψετε οποιαδήποτε τιμή θέλετε. Σε αυτό το παράδειγμα, χρησιμοποιούμε NA () επιστρέφουμε ένα σφάλμα # N / A, αλλά θα μπορούσατε επίσης να επιστρέψετε ένα μήνυμα όπως "Λείπει" ή "Δεν βρέθηκε".

Θυμηθείτε: πρέπει να ταξινομήσετε τα δεδομένα με βάση την τιμή αναζήτησης για να λειτουργήσει αυτό το τέχνασμα.

Καλές συνδέσεις

Γιατί 2 VLOOKUPS είναι καλύτερα από 1 VLOOKUP (Charles Williams)

ενδιαφέροντα άρθρα...