
Περίληψη
Για να εξαγάγετε πολλές αντιστοιχίσεις για να διαχωρίσετε κελιά, σε ξεχωριστές στήλες, μπορείτε να χρησιμοποιήσετε έναν τύπο πίνακα που βασίζεται σε INDEX και SMALL. Στο παράδειγμα που εμφανίζεται, ο τύπος στο F5 είναι:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))
Αυτός είναι ένας τύπος πίνακα και πρέπει να εισαχθεί με Control + Shift + Enter.
Αφού εισαγάγετε τον τύπο στο πρώτο κελί, σύρετέ το προς τα κάτω και απέναντι για να συμπληρώσετε τα άλλα κελιά.
Εξήγηση
Σημείωση: αυτός ο τύπος χρησιμοποιεί δύο ονόματα εύρους: το "names" αναφέρεται στο C5: C11 και το "groups" αναφέρεται στο B5: B11. Αυτά τα ονόματα ορίζονται και στην παραπάνω οθόνη.
Η ουσία αυτού του τύπου είναι η εξής: χρησιμοποιούμε τη συνάρτηση SMALL για να δημιουργήσουμε έναν αριθμό σειράς που αντιστοιχεί σε ένα "nth match". Μόλις έχουμε τον αριθμό σειράς, απλώς τον περνάμε στη συνάρτηση INDEX, η οποία επιστρέφει την τιμή σε αυτήν τη σειρά.
Το κόλπο είναι ότι το SMALL συνεργάζεται με έναν πίνακα που κατασκευάζεται δυναμικά από το IF σε αυτό το bit:
IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)
Αυτό το απόσπασμα ελέγχει την ονομαζόμενη περιοχή "ομάδες" για την τιμή στο E5. Εάν βρεθεί, επιστρέφει έναν αριθμό σειράς από έναν πίνακα σχετικών αριθμών σειρών που δημιουργήθηκαν με:
ROW(names)-MIN(ROW(names))+1
Το τελικό αποτέλεσμα είναι ένας πίνακας που περιέχει αριθμούς όπου υπάρχει ένας αγώνας και FALSE όπου δεν:
(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)
Αυτός ο πίνακας πηγαίνει σε ΜΙΚΡΟ. Η τιμή k για το SMALL (nth) προέρχεται από ένα επεκτεινόμενο εύρος:
COLUMNS($E$5:E5)
Όταν αντιγράφεται στον πίνακα αποτελεσμάτων, το εύρος επεκτείνεται, προκαλώντας αύξηση του k (nth). Η SMALL συνάρτηση επιστρέφει κάθε αντίστοιχο αριθμό σειράς, ο οποίος παρέχεται στη συνάρτηση INDEX ως baris_num, με την ονομαζόμενη περιοχή "names" ως πίνακα.
Αντιμετώπιση σφαλμάτων
Όταν το COLUMNS επιστρέφει μια τιμή για το k που δεν υπάρχει, το SMALL ρίχνει ένα σφάλμα #NUM. Αυτό συμβαίνει μετά την πραγματοποίηση όλων των αγώνων. Για να καταστείλουμε το σφάλμα, τυλίγουμε τον τύπο στη συνάρτηση IFERROR για να πιάσουμε σφάλματα και να επιστρέψουμε μια κενή συμβολοσειρά ("").