VBA Matrix - vytváření a další

Tento tutoriál vám ukáže, jak vytvořit matici pomocí pole ve VBA.

Matice je obdélníkové pole čísel se stejným počtem řádků a sloupců. Matici ve VBA můžete vytvořit naplněním proměnných Array a pomocí smyček VBA.

Vytvoření matice ve VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matice () jako celé čísloDim x, i, j, k jako celé číslo're-dim the size of the arrayMatice ReDim (1 až 3, 1 až 3) jako celé číslox = 1Pro i = 1 až 3Pro j = 1 až 3matice (i, j) = xx = (x + 1)Další jPříště já'Vraťte výsledek na list najednouRozsah ("A1: C3") = maticeEnd Sub

Spuštěním výše uvedeného postupu se do vašeho listu vrátí jednoduchá matice rozsahu („A1: C3“).

Převeďte jednořadý vektor na matici

Zvažte níže uvedený sloupec čísel. V určité fázi můžete chtít převést sloupec čísel na matici.

Pomocí níže uvedené funkce můžeme ze seznamu čísel vytvořit matici.

123456789101112131415161718192021 Funkce 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 To No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector As IntegerDim Col_Count jako celé číslo, Row_Count jako celé čísloNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Odstranit NULL podmínkyPokud Vector_Range není nic, ukončete funkciPokud No_Of_Cols_in_output = 0, ukončete funkciPokud No_of_Rows_in_output = 0, ukončete funkciPokud No_Of_Elements_In_Vector = 0, pak funkci ukončetePro Col_Count = 1 až No_Of_Cols_in_outputPro Row_Count = 1 až No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Další řádek_PočetDalší Col_CountCreate_Matrix = Temp_ArrayKoncová funkce

Matici můžeme vytvořit v našem listu aplikace Excel zavoláním výše uvedené funkce.

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

Převeďte matici na jednoradový vektor

Alternativně můžete chtít převést matici na jeden řádek. Zvažte níže uvedenou matici.

Pomocí níže uvedené funkce to můžeme převést na pole jedné dimenze.

12345678910111213141516171819202122 Funkce Create_Vector (Matrix_Range As Range) As VariantDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i As IntegerDim j jako celé číslo'vyzvedněte řádky a sloupce z matice.'No_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Odstranit NULL podmínkyPokud Matrix_Range není nic, ukončete funkciPokud No_of_Cols = 0, ukončete funkciPokud No_Of_Rows = 0, ukončete funkci'smyčka skrz pole - první prvekPro j = 1 do No_Of_Rows'nyní smyčku přes druhý prvekPro i = 0 do No_of_Cols - 1'přiřadit dočasné dimenzi jedné dimenzeTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Příště jáDalší jCreate_Vector = Temp_ArrayKoncová funkce

Tuto funkci nyní můžeme zavolat pomocí níže uvedeného postupu.

1234567891011 Sub GenerateVector ()Dim Vector () jako variantaDim k As IntegerDim No_of_Elements'získejte poleVector = Create_Vector (Sheets ("Sheet1"). Range ("A1: D5"))'smyčku přes pole a naplňte listPro k = 0 až UBound (vektor) - 1Listy („List1“). Rozsah („G1“). Ofset (k, 0). Hodnota = Vektor (k + 1)Další kEnd Sub

Tento postup vrátí následující výsledek.

Použití WorksheetFunction.MMULT k vytvoření maticového pole

Zvažte následující tabulku.

Níže uvedený postup můžeme použít k výpočtu výše úroku pro výše uvedenou síť na základě úrokové sazby a částky, kterou si osoba chce půjčit.

123456789101112 Dílčí použitíMMULT ()Dim rngIntRate As RangeDim rngAmtLoan As RangeDim Result () jako varianta“naplňte naše objekty dosahuNastavit rngIntRate = rozsah ("B4: B9")Nastavit rngAmtLoan = Rozsah ("C3: H3")'použijte vzorec MMULT k vyplnění pole výsledkůVýsledek = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)“naplňte listRozsah ("C4: H9") = VýsledekEnd Sub

Ve výše uvedeném listu si všimnete, že výše uvedený postup naplňuje buňky spíše hodnotami než vzorci - viz C4 ve výše uvedeném obrázku - má v sobě hodnotu 200, nikoli vzorec. Za použití Pracovní list Funkce metoda vždy vrací do listu statickou hodnotu a ne vzorec. To znamená, že pokud se změní úroková sazba nebo výše půjčky, odpovídající hodnoty ve vyplněné matici NEBUDE změna.

Místo použití WorksheetFunction.MMULT, můžete použít VBA k použití funkce MMULT na buňku pomocí FormulaArray metoda.

123 Dílčí vložkaMMULT ()Rozsah ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"End Sub

Všimněte si, že nyní, když je tabulka naplněna, je v buňkách použit vzorec.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave