VBA-Matrix - Erstellen und mehr

Dieses Tutorial zeigt Ihnen, wie Sie eine Matrix mit einem Array in VBA erstellen.

Eine Matrix ist ein rechteckiges Array von Zahlen mit der gleichen Anzahl von Zeilen und Spalten. Sie können eine Matrix in VBA erstellen, indem Sie Array-Variablen auffüllen und VBA-Schleifen verwenden.

Erstellen einer Matrix in VBA

123456789101112131415 Unter CreateSimpleMatrix()Dim matrix() As IntegerDim x, i, j, k As Integer'die Größe des Arrays neu dimmenReDim-Matrix (1 bis 3, 1 bis 3) als Integerx = 1Für i = 1 bis 3Für j = 1 bis 3Matrix(i, j) = xx = (x + 1)Nächstes jAls nächstes' Ergebnis auf einmal in das Blatt zurückgebenBereich("A1:C3") = MatrixEnd Sub

Wenn Sie das obige Verfahren ausführen, wird eine einfache Matrix zu Range("A1:C3") zu Ihrem Arbeitsblatt zurückgegeben.

Konvertieren eines einreihigen Vektors in eine Matrix

Betrachten Sie die folgende Zahlenkolonne. Vielleicht möchten Sie irgendwann eine Zahlenspalte in eine Matrix umwandeln.

Mit der folgenden Funktion können wir aus der Liste der Zahlen eine Matrix erstellen.

123456789101112131415161718192021 Funktion Create_Matrix(Vector_Range als Bereich, No_Of_Cols_in_output als Integer, No_of_Rows_in_output als Integer) als VarianteReDim Temp_Array(1 bis No_Of_Cols_in_output, 1 bis No_of_Rows_in_output)Dim No_Of_Elements_In_Vector As IntegerDim Col_Count als Integer, Row_Count als IntegerNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'NULL-Bedingungen beseitigenWenn Vector_Range nichts ist, dann Funktion beendenWenn No_Of_Cols_in_output = 0, dann Funktion beendenWenn No_of_Rows_in_output = 0, dann Funktion beendenWenn No_Of_Elements_In_Vector = 0, dann Funktion beendenFür Col_Count = 1 To No_Of_Cols_in_outputFür Row_Count = 1 To No_of_Rows_in_outputTemp_Array(Col_Count, Row_Count) = Vector_Range.Cells(((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Nächste Row_CountNächster Col_CountCreate_Matrix = Temp_ArrayEndfunktion

Wir können die Matrix in unserem Excel-Blatt erstellen, indem wir die obige Funktion aufrufen.

123 Sub ConvertToMatrix()Range("C1:H2") = Create_Matrix(Range("A1:A10"), 2, 6)End Sub

Konvertieren Sie eine Matrix in einen einzeiligen Vektor

Alternativ können Sie eine Matrix in eine einzelne Zeile umwandeln. Betrachten Sie die Matrix unten.

Mit der folgenden Funktion können wir dies in ein eindimensionales Array umwandeln.

12345678910111213141516171819202122 Funktion Create_Vector(Matrix_Range As Range) als VarianteDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i As IntegerDim j As Integer'nimm die Zeilen und Spalten aus der Matrix aufNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array(No_of_Cols * No_Of_Rows)'NULL-Bedingungen beseitigenWenn Matrix_Range nichts ist, dann Funktion beendenWenn No_of_Cols = 0, dann Funktion beendenWenn No_Of_Rows = 0, dann Funktion beenden'Schleife durch das Array - das erste ElementFür j = 1 bis No_Of_Rows'Jetzt durch das zweite Element schleifenFür i = 0 bis No_of_Cols - 1'einem eindimensionalen temporären Array zuweisenTemp_Array((i * No_Of_Rows) + j) = Matrix_Range.Cells(j, i + 1)Als nächstesNächstes jCreate_Vector = Temp_ArrayEndfunktion

Wir können diese Funktion nun mit der folgenden Prozedur aufrufen.

1234567891011 Unter GenerateVector()Dim Vector() als VarianteDim k As IntegerDim No_of_Elements'bekomme das ArrayVektor = Create_Vector(Sheets("Sheet1").Range("A1:D5"))'Schleife durch das Array und befülle das BlattFür k = 0 nach UBound(Vektor) - 1Sheets("Sheet1").Range("G1").Offset(k, 0).Wert = Vektor(k + 1)Nächstes kEnd Sub

Dieses Verfahren gibt das folgende Ergebnis zurück.

Verwenden der WorksheetFunction.MMULT zum Erstellen eines Matrix-Arrays

Betrachten Sie die folgende Tabelle.

Wir können das folgende Verfahren verwenden, um den Zinsbetrag für das obige Raster basierend auf dem Zinssatz und dem Betrag, den die Person leihen möchte, zu berechnen.

123456789101112 UnterverwendungMMULT()Dim rngIntRate As RangeDim rngAmtLoan As RangeDim Result() als Variante'unsere Sortimentsobjekte bevölkernSetze rngIntRate = Range("B4:B9")Setze rngAmtLoan = Range("C3:H3")'Verwenden Sie die MMULT-Formel, um das Ergebnis-Array zu füllenErgebnis = WorksheetFunction.MMult(rngIntRate, rngAmtLoan)'das Blatt ausfüllenBereich("C4:H9") = ErgebnisEnd Sub

Sie werden im obigen Blatt feststellen, dass die obige Prozedur die Zellen mit Werten statt mit Formeln füllt - siehe C4 in der obigen Grafik - es enthält den Wert 200, keine Formel. Verwendung der ArbeitsblattFunktion -Methode gibt immer einen statischen Wert an das Arbeitsblatt und keine Formel zurück. Das heißt, sollte sich der Zinssatz oder die Kreditsumme ändern, werden die entsprechenden Werte in der ausgefüllten Matrix WIRD NICHT Veränderung.

Anstatt die ArbeitsblattFunktion.MMULT, können Sie VBA verwenden, um die MMULT-Funktion auf eine Zelle anzuwenden, indem Sie die FormelArray Methode.

123 Sub InsertMMULT()Range("C4:H9").FormulaArray = "=MMULT(B4:B9,C3:H3)"End Sub

Beachten Sie, dass jetzt beim Auffüllen der Kalkulationstabelle eine Formel in den Zellen verwendet wird.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave