VBA Matrix - Izveidot un vairāk

Šī apmācība parādīs, kā izveidot matricu, izmantojot masīvu VBA.

Matrica ir taisnstūrveida skaitļu masīvs ar vienādu rindu un kolonnu daudzumu. Jūs varat izveidot matricu VBA, aizpildot masīva mainīgos un izmantojot VBA cilpas.

Matricas izveide VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matrica () Kā vesels skaitlisDim x, i, j, k As Integer'atkārtoti aptumšojiet masīva lielumuReDim matrica (no 1 līdz 3, no 1 līdz 3) kā vesels skaitlisx = 1Attiecībā uz i = 1 līdz 3Ja j = 1 līdz 3matrica (i, j) = xx = (x + 1)Nākamais jTālāk i'atgrieziet rezultātu lapā vienā piegājienāDiapazons ("A1: C3") = matricaBeigu apakš

Izpildot iepriekš minēto procedūru, jūsu darblapā tiks parādīta vienkārša matrica diapazonā (“A1: C3”).

Pārvērst vienas rindas vektoru matricā

Apsveriet zemāk esošo skaitļu kolonnu. Iespējams, kādā posmā vēlaties skaitļu kolonnu pārvērst matricā.

Izmantojot tālāk norādīto funkciju, mēs varam izveidot matricu no skaitļu saraksta.

123456789101112131415161718192021 Funkcija Create_Matrix (Vector_Range kā diapazons, No_Of_Cols_in_output kā vesels skaitlis, No_of_Rows_in_output kā vesels skaitlis) kā variantsReDim Temp_Array (1 uz No_Of_Cols_in_output, 1 uz No_of_Rows_in_output)Dim No_Of_Elements_In_Vector kā vesels skaitlisDim Col_Count As Integer, Row_Count As IntegerNo_Of_Elements_In_Vector = Vector_Range.Rows.Count"Novērst NULL nosacījumusJa Vector_Range nav nekas, izejiet no funkcijasJa No_Of_Cols_in_output = 0, tad izejiet no funkcijasJa No_of_Rows_in_output = 0, tad izejiet no funkcijasJa No_Of_Elements_In_Vector = 0, tad izejiet no funkcijasCol_Count = 1 uz No_Of_Cols_in_putputRindas_skaitlim = 1 uz izvades NrTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((([No_of_Rows_in_output] * (Col_Count - 1) + Row_Count), 1)Nākamā rinda_skaitNākamais kolCreate_Matrix = Temp_ArrayBeigu funkcija

Mēs varam izveidot matricu mūsu Excel lapā, izsaucot iepriekš minēto funkciju.

123 Sub ConvertToMatrix ()Diapazons ("C1: H2") = Create_Matrix (Diapazons ("A1: A10"), 2, 6)Beigu apakš

Pārveidojiet matricu par vienas rindas vektoru

Varat arī pārvērst matricu vienā rindā. Apsveriet Matricu zemāk.

Izmantojot tālāk norādīto funkciju, mēs varam to pārvērst vienas dimensijas masīvā.

12345678910111213141516171819202122 Funkcija Create_Vector (Matrix_Range As Range) kā variantsDim No_of_Cols kā vesels skaitlis, No_Of_Rows kā vesels skaitlisDim i As IntegerDim j Kā vesels skaitlis"paņemiet rindas un kolonnas no matricasNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)"Novērst NULL nosacījumusJa Matrix_Range nav nekas, izejiet no funkcijasJa No_of_Cols = 0, tad izejiet no funkcijasJa No_Of_Rows = 0, tad izejiet no funkcijas'cilpa caur masīvu - pirmais elementsJ = 1 līdz No_Of_Rows'tagad cilpa caur otro elementuJa i = 0 līdz No_of_Cols - 1"piešķirt vienas dimensijas pagaidu masīvuTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range. Šūnas (j, i + 1)Tālāk iNākamais jCreate_Vector = Temp_ArrayBeigu funkcija

Tagad mēs varam izsaukt šo funkciju, izmantojot tālāk norādīto procedūru.

1234567891011 Sub GenerateVector ()Dim vektors () kā variantsDim k Kā vesels skaitlisDim No_of_Elements'iegūstiet masīvuVector = Create_Vector (Sheets ("Sheet1"). Diapazons ("A1: D5"))cilpu caur masīvu un aizpildiet lapuJa k = 0 līdz UBound (vektors) - 1Izklājlapas ("1. lapa"). Diapazons ("G1"). Nobīde (k, 0). Vērtība = vektors (k + 1)Nākamais kBeigu apakš

Šī procedūra atgriezīs šādu rezultātu.

Izmantojot WorksheetFunction.MMULT, lai izveidotu matricas masīvu

Apsveriet šādu izklājlapu.

Mēs varam izmantot tālāk norādīto procedūru, lai aprēķinātu procentu summu iepriekš minētajam režģim, pamatojoties uz procentu likmi un summu, ko persona vēlas aizņemties.

123456789101112 ApakšlietojumsMULT ()Dim rngIntRate kā diapazonsDim rngAmtLoan kā diapazonsDim rezultāts () kā variants"aizpildiet mūsu diapazona objektusIestatīt rngIntRate = Diapazons ("B4: B9")Iestatīt rngAmtLoan = Diapazons ("C3: H3")'izmantojiet MMULT formulu, lai aizpildītu rezultātu masīvuRezultāts = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'aizpildiet lapuDiapazons ("C4: H9") = rezultātsBeigu apakš

Iepriekš redzamajā lapā jūs pamanīsit, ka iepriekš minētā procedūra aizpilda šūnas ar vērtībām, nevis formulām - skatiet C4 iepriekšējā grafikā - tajā ir vērtība 200, nevis formula. Izmantojot DarblapaFunkcija metode vienmēr atgriež darblapā statisku vērtību, nevis formulu. Tas nozīmē, ka, mainoties procentu likmei vai aizdevuma summai, aizpildītās matricas atbilstošās vērtības NEBŪS mainīt.

Tā vietā, lai izmantotu DarblapaFunkcija.MULT, varat izmantot VBA, lai šūnā lietotu MMULT funkciju, izmantojot FormulaArray metodi.

123 Sub InsertMMULT ()Diapazons ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Beigu apakš

Ņemiet vērā, ka tagad, kad izklājlapa ir aizpildīta, šūnās tiek izmantota formula.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave