Οι τύποι πίνακα είναι ένα από τα πιο ισχυρά χαρακτηριστικά του Excel. Εάν είστε εξοικειωμένοι με τύπους πίνακα, θα χαρείτε να μάθετε ότι μπορείτε να δημιουργήσετε συναρτήσεις VBA που επιστρέφουν έναν πίνακα.
Επιστροφή μιας σειράς ονομάτων μηνών
Ας ξεκινήσουμε με ένα απλό παράδειγμα. Η συνάρτηση MonthNames επιστρέφει έναν πίνακα 12 στοιχείων από — το μαντέψατε — ονόματα μηνών.
Συναρτήσεις MonthNames()
MonthNames = Array("Ιανουάριος", "Φεβρουάριος", "Μάρτιος", _
«Απρίλιος», «Μάιος», «Ιούνιος», «Ιούλιος», «Αύγουστος», _
"Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος")
Λειτουργία τερματισμού
Για να χρησιμοποιήσετε τη συνάρτηση MonthNames σε ένα φύλλο εργασίας, πρέπει να την εισαγάγετε ως τύπο πίνακα 12 κελιών. Για παράδειγμα, επιλέξτε το εύρος A2:L2 και πληκτρολογήστε =MonthNames() . Στη συνέχεια, πατήστε Ctrl+Shift+Enter για να εισαγάγετε τον τύπο πίνακα και στα 12 επιλεγμένα κελιά. Δείτε το αποτέλεσμα.
Χρησιμοποιώντας τη συνάρτηση MonthNames για να επιστρέψετε έναν πίνακα 12 στοιχείων.
Εάν θέλετε τα ονόματα των μηνών να εμφανίζονται σε μια στήλη, επιλέξτε 12 κελιά σε μια στήλη και χρησιμοποιήστε αυτόν τον τύπο πίνακα. (Μην ξεχάσετε να το εισάγετε πατώντας Ctrl+Shift+Enter.)
=TRANSPOSE(MonthNames())
Μπορείτε επίσης να διαλέξετε έναν μήνα από τον πίνακα. Ακολουθεί ένας τύπος (όχι ένας τύπος πίνακα) που εμφανίζει το τέταρτο στοιχείο του πίνακα: Απρίλιος.
=INDEX(MonthNames(),4)
Επιστροφή ταξινομημένης λίστας
Ας υποθέσουμε ότι έχετε μια λίστα ονομάτων που θέλετε να εμφανίσετε με ταξινόμηση σε άλλη περιοχή κελιών. Δεν θα ήταν ωραίο να το κάνει αυτό για εσάς μια συνάρτηση φύλλου εργασίας;
Αυτή η προσαρμοσμένη συνάρτηση κάνει ακριβώς αυτό: Λαμβάνει ένα εύρος κελιών μιας στήλης ως όρισμα και, στη συνέχεια, επιστρέφει έναν πίνακα από αυτά τα κελιά ταξινομημένα. Το εύρος A2:A13 περιέχει ορισμένα ονόματα. Το εύρος C2:C13 περιέχει αυτόν τον τύπο πίνακα πολλαπλών κυψελών. (Θυμηθείτε ότι πρέπει να εισαγάγετε τον τύπο πατώντας Ctrl+Shift+Enter.)
Χρησιμοποιώντας μια προσαρμοσμένη συνάρτηση για να επιστρέψετε μια ταξινομημένη περιοχή.
=Ταξινόμηση(A2:A13)
Ακολουθεί ο κώδικας για τη συνάρτηση Ταξινόμησης:
Ταξινόμηση συνάρτησης (Rng ως εύρος)
Dim SortedData() Ως παραλλαγή
Dim Cell As Range
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
Μεταφέρετε δεδομένα σε SortedData
Για κάθε κύτταρο σε Rng
Αν δεν είναι κενό(κελί) Τότε
NonEmpty = NonEmpty + 1
ReDim Preserve SortedData (1 έως NonEmpty)
SortedData(NonEmpty) = Cell.Value
Τέλος εαν
Επόμενο κελί
Ταξινόμηση του πίνακα
Για i = 1 έως NonEmpty
Για j = i + 1 σε NonEmpty
Αν SortedData(i) > SortedData(j) Τότε
Temp = Ταξινομημένα Δεδομένα(j)
SortedData(j) = SortedData(i)
SortedData(i) = Θερμ
Τέλος εαν
Επόμενο j
Επόμενο i
Μεταφέρετε τον πίνακα και επιστρέψτε τον
Sorted = Application.Tranpose(SortedData)
Λειτουργία τερματισμού
Η συνάρτηση Sorted ξεκινά με τη δημιουργία ενός πίνακα με το όνομα SortedData. Αυτός ο πίνακας περιέχει όλες τις μη κενές τιμές στην περιοχή ορίσματος. Στη συνέχεια, γίνεται ταξινόμηση του πίνακα SortedData, χρησιμοποιώντας έναν αλγόριθμο ταξινόμησης με φυσαλίδες. Επειδή ο πίνακας είναι ένας οριζόντιος πίνακας, πρέπει να μεταφερθεί πριν επιστραφεί από τη συνάρτηση.
Η συνάρτηση ταξινόμησης λειτουργεί με ένα εύρος οποιουδήποτε μεγέθους, αρκεί να βρίσκεται σε μία στήλη ή γραμμή. Εάν τα μη ταξινομημένα δεδομένα βρίσκονται σε μια σειρά, ο τύπος σας πρέπει να χρησιμοποιεί τη συνάρτηση TRANSPOSE του Excel για να εμφανίζει τα ταξινομημένα δεδομένα οριζόντια. Για παράδειγμα:
=TRANSPOSE(Ταξινόμηση(A16:L16))