
Γενική φόρμουλα
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Περίληψη
Για να βρείτε τη μεγαλύτερη συμβολοσειρά σε μια σειρά με κριτήρια, μπορείτε να χρησιμοποιήσετε έναν τύπο πίνακα που βασίζεται σε INDEX, MATCH, LEN και MAX. Στο παράδειγμα που εμφανίζεται, ο τύπος στο F6 είναι:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Όπου "ονόματα" είναι η ονομαζόμενη περιοχή C5: C14 και "class" είναι η ονομαζόμενη περιοχή B5: B14.
Σημείωση: αυτός είναι ένας τύπος πίνακα και πρέπει να εισαχθεί με τον έλεγχο + shift + enter.
Εξήγηση
Ο πυρήνας αυτού του τύπου είναι η συνάρτηση MATCH, η οποία εντοπίζει τη θέση της μεγαλύτερης συμβολοσειράς χρησιμοποιώντας τα παρεχόμενα κριτήρια:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Σημείωση Το MATCH έχει ρυθμιστεί ώστε να εκτελεί έναν ακριβή αγώνα, παρέχοντας μηδέν για τον τύπο αγώνα. Για τιμή αναζήτησης, έχουμε:
LEN(names)*(class=F5)
Η συνάρτηση LEN επιστρέφει μια σειρά αποτελεσμάτων (μήκη), ένα για κάθε όνομα στη λίστα όπου class = "A" από το κελί F5:
(5;6;8;6;6;0;0;0;0;0)
Αυτό φιλτράρει αποτελεσματικά όλη την κατηγορία Β και η συνάρτηση MAX επιστρέφει στη συνέχεια τη μεγαλύτερη τιμή, 8.
Για την κατασκευή ενός πίνακα αναζήτησης, χρησιμοποιούμε την ίδια προσέγγιση:
LEN(names)*(class=F5)
Και λάβετε το ίδιο αποτέλεσμα:
(5;6;8;6;6;0;0;0;0;0)
Μετά την εκτέλεση LEN και MAX, έχουμε έναν τύπο MATCH με αυτές τις τιμές:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
Στη συνέχεια, το MATCH επιστρέφει τη θέση 8 στη λίστα, 3, η οποία τροφοδοτεί το INDEX ως εξής:
=INDEX(names,3)
Τέλος, το INDEX επιστρέφει πιστά την τιμή στην 3η θέση των ονομάτων , που είναι "Jonathan".