„VBA Matrix“ - kurkite ir daugiau

Ši pamoka parodys, kaip sukurti matricą naudojant masyvą VBA.

Matrica yra stačiakampis skaičių masyvas, turintis tą patį eilučių ir stulpelių kiekį. Matricą galite sukurti VBA užpildydami masyvo kintamuosius ir naudodami VBA kilpas.

Matricos kūrimas VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matrica () Kaip sveikasis skaičiusDim x, i, j, k As Integeriš naujo pritemdykite masyvo dydį„ReDim“ matrica (nuo 1 iki 3, nuo 1 iki 3) kaip sveikasis skaičiusx = 1Jei i = nuo 1 iki 3Jei j = 1–3matrica (i, j) = xx = (x + 1)Kitas jKitas I.“grąžinkite rezultatą į lapą vienu ypuDiapazonas ("A1: C3") = matricaPabaiga Sub

Vykdydami aukščiau nurodytą procedūrą, jūsų darbalapyje bus grąžinta paprasta matrica į diapazoną („A1: C3“).

Paverskite vienos eilės vektorių į matricą

Apsvarstykite žemiau esantį skaičių stulpelį. Galbūt tam tikru etapu norėsite skaičių stulpelį paversti matrica.

Naudodamiesi žemiau pateikta funkcija, iš skaičių sąrašo galime sukurti matricą.

123456789101112131415161718192021 Funkcija Create_Matrix (Vector_Range as Range, No_Of_Cols_in_output as Integer, No_of_Rows_in_output as Integer) kaip variantas„ReDim Temp_Array“ (1 į „No_Of_Cols_in_output“, 1 į „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„Pašalinkite NULL sąlygasJei „Vector_Range“ yra niekas, uždarykite funkcijąJei No_Of_Cols_in_output = 0, tada išeikite iš funkcijosJei No_of_Rows_in_output = 0, tada išeikite iš funkcijosJei No_Of_Elements_In_Vector = 0, tada išeikite iš funkcijosCol_Count = 1 į No_Of_Cols_in_putputRow_Count = 1 iki No_of_Rows_in_putputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Kitas eilutės_skaičiusKitas Col_CountCreate_Matrix = Temp_ArrayPabaigos funkcija

Mes galime sukurti matricą savo „Excel“ lape, paskambinę aukščiau pateikta funkcija.

123 Sub ConvertToMatrix ()Diapazonas („C1: H2“) = Create_Matrix (Diapazonas („A1: A10“), 2, 6)Pabaiga Sub

Konvertuokite matricą į vienos eilės vektorių

Arba galite konvertuoti matricą į vieną eilutę. Apsvarstykite žemiau esančią matricą.

Naudodamiesi žemiau pateikta funkcija, galime tai paversti vieno matmens masyvu.

12345678910111213141516171819202122 Funkcija Create_Vector (Matrix_Range As Range) kaip variantasDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i As IntegerDim j Kaip sveikasis skaičius“paimkite eilutes ir stulpelius iš matricosNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)„Pašalinkite NULL sąlygasJei „Matrix_Range“ yra niekas, išeikite iš funkcijosJei No_of_Cols = 0, tada išeikite iš funkcijosJei No_Of_Rows = 0, tada išeikite iš funkcijos'kilpa per masyvą - pirmasis elementasJ = 1 iki No_Of_RowsDabar pereikite prie antrojo elementoJei i = 0 iki No_of_Cols - 1“priskirti vieno matmens laikiną masyvąTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Ląstelės (j, i + 1)Kitas I.Kitas jCreate_Vector = Temp_ArrayPabaigos funkcija

Dabar šią funkciją galime iškviesti atlikdami toliau nurodytą procedūrą.

1234567891011 Sub GenerateVector ()Šviesus vektorius () kaip variantasDim k Kaip sveikasis skaičiusSumažinti elementų skaičių'gauti masyvąVektorius = Sukurti_vektorių (Lakštai („Lapas1“). Diapazonas („A1: D5“))“peržiūrėkite masyvą ir užpildykite lapąJei k = 0 iki UBound (vektoriaus) - 1Skaičiuoklės („Sheet1“). Diapazonas („G1“). Poslinkis (k, 0) .Vertė = vektorius (k + 1)Kitas kPabaiga Sub

Ši procedūra duos tokį rezultatą.

Naudodami „WorksheetFunction.MMULT“, kad sukurtumėte matricos masyvą

Apsvarstykite šią skaičiuoklę.

Mes galime naudoti toliau nurodytą procedūrą, kad apskaičiuotume palūkanų sumą už aukščiau pateiktą tinklelį, atsižvelgdami į palūkanų normą ir sumą, kurią asmuo nori pasiskolinti.

123456789101112 Papildomas naudojimasMMULT ()Dim rngIntRate As RangeDim rngAmtLoan As RangeDim Rezultatas () kaip variantas“užpildykite mūsų diapazono objektusNustatyti rngIntRate = Diapazonas („B4: B9“)Nustatykite rngAmtLoan = Diapazonas („C3: H3“)'naudokite MMULT formulę, kad užpildytumėte rezultatų masyvąRezultatas = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)“užpildykite lapąDiapazonas („C4: H9“) = RezultatasPabaiga Sub

Aukščiau esančiame lape pastebėsite, kad aukščiau pateikta procedūra užpildo langelius vertėmis, o ne formulėmis - žr. Aukščiau pateiktą grafiką C4 - joje yra 200 vertė, o ne formulė. Naudojant Darbo lapas Funkcija metodas visada grąžina statinę vertę į darbalapį, o ne formulę. Tai reiškia, kad pasikeitus palūkanų normai ar paskolos sumai, atitinkamos užpildytos matricos vertės NEDARYS keistis.

Užuot naudoję Darbo lapasFunkcija.MULT, galite naudoti VBA, kad pritaikytumėte MMULT funkciją langeliui naudodami „FormulaArray“ metodas.

123 ĮterpimasMMULT ()Diapazonas ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Pabaiga Sub

Atminkite, kad dabar, kai skaičiuoklė užpildyta, ląstelėse naudojama formulė.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave