VBA Matrix - Létrehozás és egyebek

Ez az oktatóanyag megmutatja, hogyan hozhat létre mátrixot egy tömb segítségével a VBA -ban.

A mátrix egy téglalap alakú számtömb, amely azonos számú sort és oszlopot tartalmaz. A VBA -ban mátrixot hozhat létre tömbváltozók feltöltésével és VBA hurkok használatával.

Mátrix létrehozása VBA -ban

123456789101112131415 Sub CreateSimpleMatrix ()Dim mátrix () Mint egészDim x, i, j, k Mint egész'halványítsa újra a tömb méretétReDim mátrix (1-3., 1-3.) Egész számkéntx = 1I = 1 -től 3 -igHa j = 1 - 3mátrix (i, j) = xx = (x + 1)Következő jKövetkező i'egy menetben visszaadja az eredményt a lapraTartomány ("A1: C3") = mátrixEnd Sub

A fenti eljárás futtatásával egy egyszerű mátrix kerül vissza a Tartományba („A1: C3”) a munkalapra.

Konvertálja az egysoros vektort mátrixgá

Tekintsük az alábbi számoszlopot. Előfordulhat, hogy bizonyos szakaszokban számsávot szeretne mátrixmá alakítani.

Az alábbi függvény segítségével mátrixot hozhatunk létre a számok listájából.

123456789101112131415161718192021 Funkció Create_Matrix (Vector_Range as Range, No_Of_Cols_in_output as Integer, No_of_Rows_in_output as Integer) mint VariantReDim Temp_Array (1 - No_Of_Cols_in_output, 1 - No_of_Rows_in_output)Dim No_Of_Elements_In_Vector as IntegerHalvány oszlopszám egészként, sor_szám egészkéntNo_Of_Elements_In_Vector = Vector_Range.Rows.Count„Távolítsa el a NULL feltételeketHa a Vector_Range semmi, akkor lépjen ki a funkcióbólHa No_Of_Cols_in_output = 0, akkor lépjen ki a funkcióbólHa No_of_Rows_in_output = 0, akkor lépjen ki a funkcióbólHa No_Of_Elements_In_Vector = 0, akkor lépjen ki a funkcióbólCol_Count = 1 esetén No_Of_Cols_in_outputRow_Count = 1 esetén No_of_Rows_in_putputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((([No_of_Rows_in_output] * (Col_Count - 1) + Row_Count), 1)Következő sor_számKövetkező oszlopszámCreate_Matrix = Temp_ArrayVége funkció

A mátrixot létrehozhatjuk Excel lapunkban, a fenti függvény meghívásával.

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

Alakítsa át a mátrixot egysoros vektorrá

Alternatív megoldásként érdemes lehet egy mátrixot egyetlen sorba konvertálni. Tekintsük az alábbi Mátrixot.

Az alábbi függvény segítségével ezt egyetlen dimenziós tömbré alakíthatjuk át.

12345678910111213141516171819202122 Funkció Create_Vector (Matrix_Range As Range) VariantkéntDim No_of_Cols as Integer, No_Of_Rows as IntegerDim i As IntegerDim j Mint egész'vegye fel a sorokat és oszlopokat a mátrixbólNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)„Távolítsa el a NULL feltételeketHa a Matrix_Range semmi, akkor lépjen ki a funkcióbólHa No_of_Cols = 0, akkor lépjen ki a funkcióbólHa No_Of_Rows = 0, akkor lépjen ki a funkcióból'hurok a tömbön - az első elemJ = 1 esetén No_Of_Rows'most hurkolja át a második elemetAz i = 0 esetén a No_of_Cols - 1'hozzárendelés egyetlen dimenziós ideiglenes tömbhözTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Következő iKövetkező jCreate_Vector = Temp_ArrayVége funkció

Ezt a funkciót most az alábbi eljárással hívhatjuk meg.

1234567891011 Sub GenerateVector ()Halvány vektor () mint változatDim k Mint egészHalvány elemek'szerezd meg a tömbötVektor = Create_Vector (Táblázatok ("Sheet1"). Tartomány ("A1: D5"))'hurkolja át a tömböt, és töltse ki a lapotK = 0 esetén UBound (vektor) - 1Táblázatok ("Sheet1"). Tartomány ("G1"). Eltolás (k, 0). Érték = Vektor (k + 1)Következő kEnd Sub

Ez az eljárás a következő eredményt adja vissza.

A WorksheetFunction.MMULT használatával mátrix tömböt hozhat létre

Tekintsük a következő táblázatot.

Az alábbi eljárással kiszámíthatjuk a fenti rács kamatösszegét a kamatláb és a személy által felvenni kívánt összeg alapján.

123456789101112 AlhasználatMMULT ()Dim rngIntRate mint tartományDim rngAmtLoan As RangeHalvány eredmény () mint változat'népesítsük be tartományunk objektumaitÁllítsa be az rngIntRate = tartományt ("B4: B9")Állítsa be az rngAmtLoan = tartományt ("C3: H3")'használja az MMULT képletet az eredménytömb kitöltéséreEredmény = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'töltse ki a lapotTartomány ("C4: H9") = EredményEnd Sub

Látni fogja a fenti lapon, hogy a fenti eljárás a cellákat értékekkel tölti fel, nem pedig képletekkel - lásd a fenti ábrán a C4 -et - 200 -as érték van benne, nem képlet. Használni a MunkalapFunkció metódus mindig statikus értéket ad vissza a munkalapnak, nem pedig képletet. Ez azt jelenti, hogy ha a kamatláb vagy a kölcsön összege megváltozik, a kitöltött mátrix megfelelő értékei NEM FOG változás.

Ahelyett, hogy a MunkalapFunkció.MMULT, a VBA segítségével alkalmazhatja az MMULT függvényt egy cellára a FormulaArray módszer.

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

Vegye figyelembe, hogy most, amikor a táblázat feltöltésre kerül, egy képletet használnak a cellákban.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave