Πίνακας περιεχομένων
Ο γρηγορότερος τρόπος για να μετατρέψετε μια στήλη ή μια γραμμή τιμών σε δισδιάστατο πίνακα είναι η χρήση της συνάρτησης WRAPCOLS ή WRAPROWS.
Από τις πρώτες μέρες του Excel, ήταν πολύ καλό στον υπολογισμό και την ανάλυση αριθμών. Αλλά ο χειρισμός των πινάκων ήταν παραδοσιακά μια πρόκληση. Η εισαγωγή των δυναμικών πινάκων έκανε τη χρήση των τύπων των πινάκων πολύ πιο εύκολη. Και τώρα, η Microsoft κυκλοφορεί μια σειρά από νέες δυναμικές συναρτήσεις πινάκων για τον χειρισμό και την αναδιαμόρφωση των πινάκων. Αυτό το σεμινάριο θα σας διδάξει πώς να χρησιμοποιείτε δύο τέτοιες συναρτήσεις,WRAPCOLS και WRAPROWS, για να μετατρέψετε μια στήλη ή μια γραμμή σε πίνακα 2D σε χρόνο μηδέν.
Συνάρτηση Excel WRAPCOLS
Η συνάρτηση WRAPCOLS στο Excel μετατρέπει μια γραμμή ή στήλη τιμών σε δισδιάστατο πίνακα με βάση τον καθορισμένο αριθμό τιμών ανά γραμμή.
Η σύνταξη έχει τα ακόλουθα ορίσματα:
WRAPCOLS(vector, wrap_count, [pad_with])Πού:
- διάνυσμα (απαιτείται) - ο μονοδιάστατος πίνακας ή η περιοχή προέλευσης.
- wrap_count (απαιτείται) - ο μέγιστος αριθμός τιμών ανά στήλη.
- pad_with (προαιρετικό) - η τιμή που θα συμπληρωθεί με την τελευταία στήλη εάν δεν υπάρχουν επαρκή στοιχεία για να τη γεμίσουν. Εάν παραλειφθεί, οι τιμές που λείπουν θα συμπληρωθούν με #N/A (προεπιλογή).
Για παράδειγμα, για να αλλάξετε το εύρος B5:B24 σε έναν δισδιάστατο πίνακα με 5 τιμές ανά στήλη, ο τύπος είναι ο εξής:
=WRAPROWS(B5:B24, 5)
Πληκτρολογείτε τον τύπο σε οποιοδήποτε κελί και αυτός διαχέεται αυτόματα σε όσα κελιά χρειάζεται. Στην έξοδο WRAPCOLS, οι τιμές διατάσσονται κάθετα, από πάνω προς τα κάτω, με βάση το wrap_count Μετά τη συμπλήρωση του αριθμού, ξεκινά μια νέα στήλη.
Λειτουργία WRAPROWS του Excel
Η συνάρτηση WRAPROWS στο Excel μετατρέπει μια γραμμή ή μια στήλη τιμών σε δισδιάστατο πίνακα με βάση τον αριθμό των τιμών ανά γραμμή που καθορίζετε.
Η σύνταξη έχει ως εξής:
WRAPROWS(vector, wrap_count, [pad_with])Πού:
- διάνυσμα (απαιτείται) - ο μονοδιάστατος πίνακας ή η περιοχή προέλευσης.
- wrap_count (υποχρεωτικό) - ο μέγιστος αριθμός τιμών ανά γραμμή.
- pad_with (προαιρετικό) - η τιμή που θα συμπληρωθεί με την τελευταία γραμμή, εάν δεν υπάρχουν επαρκή στοιχεία για να τη γεμίσουν. Η προεπιλογή είναι #N/A.
Για παράδειγμα, για να μετατρέψετε το εύρος B5:B24 σε έναν πίνακα 2D με 5 τιμές σε κάθε γραμμή, ο τύπος είναι ο εξής:
=WRAPROWS(B5:B24, 5)
Εισάγετε τον τύπο στο πάνω αριστερό κελί της περιοχής διαρροής και συμπληρώνει αυτόματα όλα τα υπόλοιπα κελιά. Η συνάρτηση WRAPROWS ταξινομεί τις τιμές οριζόντια, από αριστερά προς τα δεξιά, με βάση το wrap_count Μετά την επίτευξη του αριθμού, ξεκινά μια νέα σειρά.
Διαθεσιμότητα WRAPCOLS και WRAPROWS
Και οι δύο λειτουργίες είναι διαθέσιμες μόνο στο Excel for Microsoft 365 (Windows και Mac) και στο Excel for the web.
Στις προηγούμενες εκδόσεις, μπορείτε να χρησιμοποιήσετε παραδοσιακούς πιο σύνθετους τύπους για να εκτελέσετε μετασχηματισμούς από στήλη σε πίνακα και από γραμμή σε πίνακα. Στη συνέχεια αυτού του σεμιναρίου, θα συζητήσουμε λεπτομερώς τις εναλλακτικές λύσεις.
Συμβουλή. Για να εκτελέσετε μια αντίστροφη λειτουργία, δηλαδή να αλλάξετε έναν πίνακα 2D σε μια μόνο στήλη ή γραμμή, χρησιμοποιήστε τη συνάρτηση TOCOL ή TOROW, αντίστοιχα.
Πώς να μετατρέψετε στήλη / γραμμή σε εύρος στο Excel - παραδείγματα
Τώρα που έχετε κατανοήσει τη βασική χρήση, ας ρίξουμε μια πιο προσεκτική ματιά σε μερικές πιο συγκεκριμένες περιπτώσεις.
Ορισμός του μέγιστου αριθμού τιμών ανά στήλη ή γραμμή
Ανάλογα με τη δομή των αρχικών σας δεδομένων, μπορεί να τα βρείτε κατάλληλα για αναδιάταξη σε στήλες (WRAPCOLS) ή γραμμές (WRAPROWS). Όποια συνάρτηση και αν χρησιμοποιήσετε, είναι η wrap_count όρισμα που καθορίζει τον μέγιστο αριθμό τιμών σε κάθε στήλη/σειρά.
Για παράδειγμα, για να μετατρέψετε το εύρος B4:B23 σε πίνακα 2D, έτσι ώστε κάθε στήλη να έχει το πολύ 10 τιμές, χρησιμοποιήστε αυτόν τον τύπο:
=WRAPCOLS(B4:B23, 10)
Για να αναδιατάξετε την ίδια σειρά ανά γραμμή, έτσι ώστε κάθε γραμμή να έχει το πολύ 4 τιμές, ο τύπος είναι:
=WRAPROWS(B4:B23, 4)
Η παρακάτω εικόνα δείχνει πώς φαίνεται αυτό:
Συμπληρώστε τις ελλείπουσες τιμές στον προκύπτοντα πίνακα
Σε περίπτωση που δεν υπάρχουν επαρκείς τιμές για να γεμίσουν όλες τις στήλες/γραμμές της προκύπτουσας περιοχής, τα WRAPROWS και WRAPCOLS θα επιστρέψουν σφάλματα #N/A για να διατηρηθεί η δομή του πίνακα 2D.
Για να αλλάξετε την προεπιλεγμένη συμπεριφορά, μπορείτε να δώσετε μια προσαρμοσμένη τιμή για το προαιρετικό pad_with επιχείρημα.
Για παράδειγμα, για να μετατρέψετε το εύρος B4:B21 σε πίνακα 2D με μέγιστο πλάτος 5 τιμών και να γεμίσετε την τελευταία γραμμή με παύλες εάν δεν υπάρχουν αρκετά δεδομένα για να τη γεμίσετε, χρησιμοποιήστε τον ακόλουθο τύπο:
=WRAPROWS(B4:B21, 5, "-")
Για να αντικαταστήσετε τις ελλείπουσες τιμές με συμβολοσειρές μηδενικού μήκους (κενά), ο τύπος είναι:
=WRAPROWS(B4:B21, 5, "")
Παρακαλώ συγκρίνετε τα αποτελέσματα με την προεπιλεγμένη συμπεριφορά (τύπος στο D5) όπου pad_with παραλείπεται:
Συγχώνευση πολλαπλών γραμμών σε εύρος 2D
Για να συνδυάσετε μερικές ξεχωριστές σειρές σε έναν ενιαίο πίνακα 2D, πρώτα στοιβάζετε τις σειρές οριζόντια χρησιμοποιώντας τη συνάρτηση HSTACK και στη συνέχεια τυλίγετε τις τιμές χρησιμοποιώντας WRAPROWS ή WRAPCOLS.
Για παράδειγμα, για να συγχωνεύσετε τις τιμές από 3 γραμμές (B5:J5, B7:G7 και B9:F9) και να τις τυλίξετε σε στήλες, καθεμία από τις οποίες περιέχει 10 τιμές, ο τύπος είναι:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Για να συνδυάσετε τιμές από πολλαπλές γραμμές σε μια περιοχή 2D όπου κάθε γραμμή περιέχει 5 τιμές, ο τύπος έχει την εξής μορφή:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Συνδυασμός πολλαπλών στηλών σε πίνακα 2D
Για να συγχωνεύσετε πολλές στήλες σε μια περιοχή 2D, πρώτα τις στοιβάζετε κάθετα χρησιμοποιώντας τη συνάρτηση VSTACK και στη συνέχεια τυλίγετε τις τιμές σε γραμμές (WRAPROWS) ή στήλες (WRAPCOLS).
Για παράδειγμα, για να συνδυάσετε τις τιμές από 3 στήλες (B5:J5, B7:G7 και B9:F9) σε μια περιοχή 2D όπου κάθε στήλη περιέχει 10 τιμές, ο τύπος είναι:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Για να συνδυάσετε τις ίδιες στήλες σε μια περιοχή 2D όπου κάθε γραμμή περιέχει 5 τιμές, χρησιμοποιήστε αυτόν τον τύπο:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Τυλίξτε και ταξινομήστε τον πίνακα
Σε περίπτωση που το εύρος πηγής έχει τιμές σε τυχαία σειρά, ενώ επιθυμείτε η έξοδος να είναι ταξινομημένη, προχωρήστε με αυτόν τον τρόπο:
- Ταξινομήστε τον αρχικό πίνακα με τον τρόπο που θέλετε χρησιμοποιώντας τη συνάρτηση SORT.
- Παρέχετε τον ταξινομημένο πίνακα στο WRAPCOLS ή στο WRAPROWS.
Για παράδειγμα, για να τυλίξετε το εύρος B4:B23 σε γραμμές, με 4 τιμές σε κάθε μία, και να ταξινομήσετε το προκύπτον εύρος από το Α έως το Ω, κατασκευάστε έναν τύπο ως εξής:
=WRAPROWS(SORT(B4:B23), 4)
Για να τυλίξετε το ίδιο εύρος σε στήλες, με 10 τιμές σε κάθε μία, και να ταξινομήσετε την έξοδο αλφαβητικά, ο τύπος είναι:
=WRAPCOLS(SORT(B4:B23), 10)
Τα αποτελέσματα έχουν ως εξής:
Συμβουλή. Για να τακτοποιήσετε τις τιμές στον πίνακα που προκύπτει σε φθίνουσα σειρά , ορίστε το τρίτο όρισμα ( sort_order ) της συνάρτησης SORT σε -1.
Εναλλακτική λύση WRAPCOLS για το Excel 365 - 2010
Σε παλαιότερες εκδόσεις του Excel όπου η συνάρτηση WRAPCOLS δεν υποστηρίζεται, μπορείτε να δημιουργήσετε τον δικό σας τύπο για να τυλίξετε τις τιμές από έναν μονοδιάστατο πίνακα σε στήλες. Αυτό μπορεί να γίνει με τη χρήση 5 διαφορετικών συναρτήσεων μαζί.
Εναλλακτική λύση WRAPCOLS για τη μετατροπή μιας γραμμής σε περιοχή 2D:
IFERROR(IF(ROW(A1)>, n , "", INDEX( row_range , , , ΓΡΑΜΜΉ(A1) + (ΣΤΉΛΗ(A1)-1)* n )), "")Εναλλακτική επιλογή WRAPCOLS για τη μετατροπή μιας στήλης σε περιοχή 2D:
IFERROR(IF(ROW(A1)>, n , "", INDEX( column_range , ΓΡΑΜΜΉ(A1) + (ΣΤΉΛΗ(A1)-1)* n )), "")Πού n είναι ο μέγιστος αριθμός τιμών ανά στήλη.
Στην παρακάτω εικόνα, χρησιμοποιούμε τον ακόλουθο τύπο για να μετατρέψουμε μια σειρά μιας σειράς (D4:J4) σε μια σειρά τριών σειρών.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
Και αυτός ο τύπος αλλάζει ένα εύρος μιας στήλης (B4:B20) σε πίνακα πέντε σειρών:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Οι παραπάνω λύσεις μιμούνται τους ανάλογους τύπους WRAPCOLS και παράγουν τα ίδια αποτελέσματα:
=WRAPCOLS(D4:J4, 3, "")
και
=WRAPCOLS(B4:B20, 5, "")
Λάβετε υπόψη σας ότι, σε αντίθεση με τη συνάρτηση WRAPCOLS του δυναμικού πίνακα, οι παραδοσιακοί τύποι ακολουθούν την προσέγγιση ενός τύπου-ενός κελιού. Έτσι, ο πρώτος μας τύπος εισάγεται στο D8 και αντιγράφεται 3 σειρές κάτω και 3 στήλες προς τα δεξιά. Ο δεύτερος τύπος εισάγεται στο D14 και αντιγράφεται 5 σειρές κάτω και 4 στήλες προς τα δεξιά.
Πώς λειτουργούν αυτοί οι τύποι
Στο επίκεντρο και των δύο τύπων, χρησιμοποιούμε τη συνάρτηση INDEX που επιστρέφει μια τιμή από τον παρεχόμενο πίνακα με βάση έναν αριθμό γραμμής και στήλης:
INDEX(array, row_num, [column_num])Καθώς έχουμε να κάνουμε με πίνακα μιας σειράς, μπορούμε να παραλείψουμε το row_num όρισμα, οπότε έχει προεπιλεγμένη τιμή 1. Το κόλπο είναι να έχετε col_num υπολογίζεται αυτόματα για κάθε κελί όπου αντιγράφεται ο τύπος. Και να πώς το κάνουμε αυτό:
ΓΡΑΜΜΉ(A1)+(ΣΤΉΛΗ(A1)-1)*3)
Η συνάρτηση ROW επιστρέφει τον αριθμό γραμμής της αναφοράς A1, ο οποίος είναι 1.
Η συνάρτηση COLUMN επιστρέφει τον αριθμό στήλης της αναφοράς A1, ο οποίος είναι επίσης 1. Η αφαίρεση του 1 το μετατρέπει σε μηδέν. Και ο πολλαπλασιασμός του 0 με το 3 δίνει το 0.
Στη συνέχεια, προσθέτετε το 1 που επιστρέφει η ROW και το 0 που επιστρέφει η COLUMN και λαμβάνετε ως αποτέλεσμα το 1.
Με αυτόν τον τρόπο, ο τύπος INDEX στο πάνω αριστερό κελί της περιοχής προορισμού (D8) υφίσταται αυτόν τον μετασχηματισμό:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
αλλαγές σε
INDEX($D$4:$J$4, ,1)
και επιστρέφει την τιμή από την 1η στήλη του καθορισμένου πίνακα, η οποία είναι "Μήλα" στο D4.
Όταν ο τύπος αντιγράφεται στο κελί D9, οι σχετικές αναφορές κελιών αλλάζουν με βάση τη σχετική θέση των γραμμών και των στηλών, ενώ η απόλυτη αναφορά εύρους παραμένει αμετάβλητη:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
μετατρέπεται σε:
INDEX($D$4:$J$4,, 2+(1-1)*3))
γίνεται:
INDEX($D$4:$J$4,, 2))
και επιστρέφει την τιμή από τη 2η στήλη του καθορισμένου πίνακα, η οποία είναι "βερίκοκα" στο E4.
Η συνάρτηση IF ελέγχει τον αριθμό των γραμμών και αν είναι μεγαλύτερος από τον αριθμό των γραμμών που έχετε καθορίσει (3 στην περίπτωσή μας) επιστρέφει ένα κενό αλφαριθμητικό (""), διαφορετικά το αποτέλεσμα της συνάρτησης INDEX:
IF(ROW(A1)>3, "", INDEX(...))
Τέλος, η συνάρτηση IFERROR διορθώνει ένα σφάλμα #REF! που εμφανίζεται όταν ο τύπος αντιγράφεται σε περισσότερα κελιά από όσα πραγματικά χρειάζονται.
Ο δεύτερος τύπος που μετατρέπει μια στήλη σε 2D range λειτουργεί με την ίδια λογική. Η διαφορά είναι ότι χρησιμοποιείτε το συνδυασμό ROW + COLUMN για να υπολογίσετε το row_num επιχείρημα για την INDEX. col_num δεν χρειάζεται σε αυτή την περίπτωση, καθώς υπάρχει μόνο μία στήλη στον πίνακα πηγής.
Εναλλακτική λύση WRAPROWS για το Excel 365 - 2010
Για να τυλίξετε τις τιμές από έναν μονοδιάστατο πίνακα σε γραμμές στο Excel 2019 και παλαιότερα, μπορείτε να χρησιμοποιήσετε τις ακόλουθες εναλλακτικές λύσεις της συνάρτησης WRAPROWS.
Μετατροπή μιας γραμμής σε περιοχή 2D:
IFERROR(IF(COLUMN(A1)>, n , "", INDEX( row_range , , ΣΤΉΛΗ(A1)+(ΓΡΑΜΜΉ(A1)-1)* n )), "")Αλλαγή μιας στήλης σε περιοχή 2D:
IFERROR(IF(COLUMN(A1)>, n , "", INDEX( column_range , ΣΤΉΛΗ(A1)+(ΓΡΑΜΜΉ(A1)-1)* n )), "")Πού n είναι ο μέγιστος αριθμός τιμών ανά γραμμή.
Στο σύνολο δεδομένων του δείγματός μας, χρησιμοποιούμε τον ακόλουθο τύπο για να μετατρέψουμε ένα εύρος μιας σειράς (D4:J4) σε εύρος τριών στηλών. Ο τύπος προσγειώνεται στο κελί D8 και στη συνέχεια αντιγράφεται σε 3 στήλες και 3 γραμμές.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Για να αναδιαμορφώσετε ένα εύρος 1 στήλης (B4:B20) σε εύρος 5 στηλών, εισαγάγετε τον παρακάτω τύπο στο D14 και σύρετέ τον σε 5 στήλες και 4 γραμμές.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Στο Excel 365, τα ίδια αποτελέσματα μπορούν να επιτευχθούν με τις ισοδύναμες φόρμουλες WRAPCOLS:
=WRAPROWS(D4:J4, 3, "")
και
=WRAPROWS(B4:B20, 5, "")
Πώς λειτουργούν αυτοί οι τύποι
Ουσιαστικά, αυτοί οι τύποι λειτουργούν όπως στο προηγούμενο παράδειγμα. Η διαφορά έγκειται στον τρόπο με τον οποίο προσδιορίζετε το row_num και col_num συντεταγμένες για τη συνάρτηση INDEX:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
Για να λάβετε τον αριθμό στήλης για το επάνω αριστερό κελί στην περιοχή προορισμού (D8), χρησιμοποιείτε την ακόλουθη έκφραση:
ΣΤΉΛΗ(A1)+(ΓΡΑΜΜΉ(A1)-1)*3)
που αλλάζει σε:
1+(1-1)*3
και δίνει 1.
Ως αποτέλεσμα, ο παρακάτω τύπος επιστρέφει την τιμή από την πρώτη στήλη του καθορισμένου πίνακα, η οποία είναι "Μήλα":
INDEX($D$4:$J$4,, 1)
Μέχρι στιγμής, το αποτέλεσμα είναι το ίδιο με το προηγούμενο παράδειγμα. Αλλά ας δούμε τι συμβαίνει σε άλλα κελιά...
Στο κελί D9, οι σχετικές αναφορές κελιών αλλάζουν ως εξής:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Έτσι, ο τύπος μετατρέπεται σε:
INDEX($D$4:$J$4,, 1+(2-1)*3))
γίνεται:
INDEX($D$4:$J$4,, 4))
και επιστρέφει την τιμή από την 4η στήλη του καθορισμένου πίνακα, η οποία είναι "Cherries" στο G4.
Η συνάρτηση IF ελέγχει τον αριθμό των στηλών και αν είναι μεγαλύτερος από τον αριθμό των στηλών που καθορίσατε, επιστρέφει ένα κενό αλφαριθμητικό (""), διαφορετικά το αποτέλεσμα της συνάρτησης INDEX:
IF(ΣΤΗΛΗ(A1)>3, "", INDEX(....))
Ως τελική πινελιά, το IFERROR αποτρέπει την εμφάνιση σφαλμάτων #REF! σε "επιπλέον" κελιά εάν αντιγράψετε τον τύπο σε περισσότερα κελιά από όσα πραγματικά χρειάζονται.
Η λειτουργία WRAPCOLS ή WRAPROWS δεν λειτουργεί
Εάν οι λειτουργίες "wrap" δεν είναι διαθέσιμες στο Excel σας ή οδηγούν σε σφάλμα, είναι πολύ πιθανό να είναι ένας από τους παρακάτω λόγους.
#NAME? error
Στο Excel 365, ενδέχεται να εμφανιστεί σφάλμα #NAME? επειδή γράψατε λάθος το όνομα της συνάρτησης. Σε άλλες εκδόσεις, υποδεικνύει ότι οι συναρτήσεις δεν υποστηρίζονται. Ως λύση, μπορείτε να χρησιμοποιήσετε την εναλλακτική λύση WRAPCOLS ή WRAPROWS.
#VALUE! error
Εμφανίζεται σφάλμα #VALUE εάν το διάνυσμα δεν είναι μονοδιάστατος πίνακας.
#NUM! σφάλμα
Εμφανίζεται σφάλμα #NUM εάν το wrap_count η τιμή είναι 0 ή αρνητικός αριθμός.
#SPILL! σφάλμα
Τις περισσότερες φορές, το σφάλμα #SPILL υποδεικνύει ότι δεν υπάρχουν αρκετά κενά κελιά για να χυθούν τα αποτελέσματα. Καθαρίστε τα γειτονικά κελιά και το σφάλμα θα εξαφανιστεί. Αν το σφάλμα επιμένει, δείτε τι σημαίνει #SPILL στο Excel και πώς να το διορθώσετε.
Αυτός είναι ο τρόπος χρήσης των συναρτήσεων WRAPCOLS και WRAPROWS για τη μετατροπή μιας μονοδιάστατης περιοχής σε δισδιάστατο πίνακα στο Excel. Σας ευχαριστώ για την ανάγνωση και ελπίζω να σας δω στο blog μας την επόμενη εβδομάδα!
Βιβλίο ασκήσεων για κατέβασμα
Λειτουργίες WRAPCOLS και WRAPROWS - παραδείγματα (.xlsx αρχείο)