Αυτό το σεμινάριο θα σας δείξει πώς να δημιουργήσετε μια μήτρα χρησιμοποιώντας έναν πίνακα στο VBA.
Ένας πίνακας είναι ένας ορθογώνιος πίνακας αριθμών με τον ίδιο αριθμό γραμμών και στηλών. Μπορείτε να δημιουργήσετε έναν πίνακα στο VBA συμπληρώνοντας μεταβλητές πίνακα και χρησιμοποιώντας βρόχους VBA.
Δημιουργία μήτρας στο VBA
123456789101112131415 | Sub CreateSimpleMatrix ()Dim matrix () Ως ακέραιοςDim x, i, j, k Ως ακέραιος αριθμός"μειώστε ξανά το μέγεθος του πίνακαReDim matrix (1 έως 3, 1 έως 3) Ως ακέραιοςx = 1Για i = 1 έως 3Για j = 1 έως 3μήτρα (i, j) = xx = (x + 1)Επόμενο jΕπόμενο iΤο αποτέλεσμα επιστροφής στο φύλλο με τη μίαΕύρος ("A1: C3") = μήτραΤέλος υπο |
Η εκτέλεση της παραπάνω διαδικασίας θα επιστρέψει έναν απλό πίνακα στο εύρος ("A1: C3") στο φύλλο εργασίας σας.
Μετατρέψτε το διάνυσμα μονής σειράς σε μήτρα
Εξετάστε τη στήλη των αριθμών παρακάτω. Μπορεί σε κάποιο στάδιο να θέλετε να μετατρέψετε μια στήλη αριθμών σε πίνακα.
Χρησιμοποιώντας την παρακάτω συνάρτηση, μπορούμε να δημιουργήσουμε έναν πίνακα από τη λίστα αριθμών.
123456789101112131415161718192021 | Συνάρτηση Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) As VariantReDim Temp_Array (1 προς No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector As IntegerDim Col_Count As Integer, Row_Count As IntegerNo_Of_Elements_In_Vector = Vector_Range.Rows.Count«Εξαλείψτε τις συνθήκες NULLΕάν το Vector_Range δεν είναι τίποτα, τότε βγείτε από τη λειτουργίαΕάν No_Of_Cols_in_output = 0 Τότε Έξοδος από τη λειτουργίαΕάν No_of_Rows_in_output = 0 Τότε Έξοδος από τη λειτουργίαΕάν No_Of_Elements_In_Vector = 0 Τότε Έξοδος από τη λειτουργίαΓια Col_Count = 1 Προς No_Of_Cols_in_outputΓια Row_Count = 1 Προς No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Επόμενο Row_CountΕπόμενο Col_CountCreate_Matrix = Temp_ArrayΛειτουργία Τέλους |
Μπορούμε να δημιουργήσουμε τον πίνακα στο φύλλο Excel, καλώντας την παραπάνω συνάρτηση.
123 | Sub ConvertToMatrix ()Εύρος ("C1: H2") = Create_Matrix (Range ("A1: A10"), 2, 6)Τέλος υπο |
Μετατρέψτε μια μήτρα σε ένα διάνυσμα μονής σειράς
Εναλλακτικά, μπορεί να θέλετε να μετατρέψετε μια μήτρα σε μία γραμμή. Εξετάστε την παρακάτω μήτρα.
Χρησιμοποιώντας την παρακάτω συνάρτηση, μπορούμε να το μετατρέψουμε σε έναν πίνακα μονής διάστασης.
12345678910111213141516171819202122 | Συνάρτηση Create_Vector (Matrix_Range As Range) As VariantDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i As IntegerDim j ως ακέραιος«σηκώστε τις γραμμές και τις στήλες από τη μήτραNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)«Εξαλείψτε τις συνθήκες NULLΕάν το Matrix_Range δεν είναι τίποτα, τότε βγείτε από τη λειτουργίαΕάν No_of_Cols = 0 Τότε Έξοδος από τη λειτουργίαΕάν No_Of_Rows = 0 Τότε Έξοδος από τη λειτουργία«βρόχος μέσω του πίνακα - το πρώτο στοιχείοΓια j = 1 έως No_Of_Rows"βρόχος τώρα στο δεύτερο στοιχείοΓια i = 0 σε No_of_Cols - 1«εκχώρηση σε έναν προσωρινό πίνακα μιας διάστασηςTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range. Cells (j, i + 1)Επόμενο iΕπόμενο jCreate_Vector = Temp_ArrayΛειτουργία Τέλους |
Τώρα μπορούμε να καλέσουμε αυτήν τη συνάρτηση χρησιμοποιώντας την παρακάτω διαδικασία.
1234567891011 | Sub GenerateVector ()Dim Vector () ως παραλλαγήDim k ως ακέραιοςDim No_of_Element«πάρε τον πίνακαVector = Create_Vector (Φύλλα ("Φύλλο1"). Εύρος ("A1: D5"))"βρόχο μέσα από τον πίνακα και συμπληρώστε το φύλλοΓια k = 0 Προς UBound (Διάνυσμα) - 1Φύλλα ("Sheet1"). Range ("G1"). Offset (k, 0). Value = Vector (k + 1)Επόμενο κΤέλος υπο |
Αυτή η διαδικασία θα επιστρέψει το ακόλουθο αποτέλεσμα.
Χρησιμοποιώντας το WorksheetFunction.MMULT για να δημιουργήσετε έναν πίνακα μήτρας
Εξετάστε το ακόλουθο υπολογιστικό φύλλο.
Μπορούμε να χρησιμοποιήσουμε την παρακάτω διαδικασία για να υπολογίσουμε το ποσό των τόκων για το παραπάνω δίκτυο με βάση το επιτόκιο και το ποσό που το άτομο θέλει να δανειστεί.
123456789101112 | ΥποχρήσηMMULT ()Ελαττώστε το εύρος τιμώνDim rngAmtLoan As RangeΑμυδρό Αποτέλεσμα () Ως Παραλλαγή«συμπληρώστε τα αντικείμενα της περιοχής μαςΟρισμός rngIntRate = Εύρος ("B4: B9")Ορισμός rngAmtLoan = Εύρος ("C3: H3")"χρησιμοποιήστε τον τύπο MMULT για να συμπληρώσετε τον πίνακα αποτελεσμάτωνΑποτέλεσμα = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)"συμπληρώστε το φύλλοΕύρος ("C4: H9") = ΑποτέλεσμαΤέλος υπο |
Θα παρατηρήσετε στο παραπάνω φύλλο, ότι η παραπάνω διαδικασία συμπληρώνει τα κελιά με τιμές και όχι με τύπους - βλέπε C4 στο παραπάνω γράφημα - έχει την τιμή 200 σε αυτήν, όχι τύπο. Χρησιμοποιώντας το Φύλλο εργασίας η μέθοδος επιστρέφει πάντα μια στατική τιμή στο φύλλο εργασίας και όχι έναν τύπο. Αυτό σημαίνει ότι σε περίπτωση αλλαγής του επιτοκίου ή του ποσού του δανείου, οι αντίστοιχες τιμές στο συμπληρωμένο πίνακα ΔΕΝ ΘΑ αλλαγή.
Αντί να χρησιμοποιήσετε το WorksheetFunction.MMULT, μπορείτε να χρησιμοποιήσετε το VBA για να εφαρμόσετε τη συνάρτηση MMULT σε ένα κελί χρησιμοποιώντας το FormulaArray μέθοδος.
123 | Sub InsertMMULT ()Εύρος ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Τέλος υπο |
Παρατηρήστε ότι τώρα, όταν συμπληρωθεί το υπολογιστικό φύλλο, χρησιμοποιείται ένας τύπος στα κελιά.