Matica VBA - vytváranie a ďalšie

Tento tutoriál vám ukáže, ako vytvoriť maticu pomocou poľa vo VBA.

Matica je obdĺžniková sústava čísel s rovnakým počtom riadkov a stĺpcov. Maticu vo VBA môžete vytvoriť vyplnením premenných poľa a použitím slučiek VBA.

Vytvorenie matice vo VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matica () ako celé čísloDim x, i, j, k ako celé číslo'znova stlmte veľkosť poľaMatica ReDim (1 až 3, 1 až 3) ako celé číslox = 1Pre i = 1 až 3Pre j = 1 až 3matica (i, j) = xx = (x + 1)Ďalej jĎalej i'vráťte výsledok na hárok narazRozsah ("A1: C3") = maticaKoniec pod

Spustením vyššie uvedeného postupu sa do vášho pracovného hárka vráti jednoduchá matica pre rozsah („A1: C3“).

Premeňte jednoradový vektor na maticu

Zvážte nižšie uvedený stĺpec čísel. V určitej fáze môžete chcieť previesť stĺpček čísel na maticu.

Pomocou nižšie uvedenej funkcie môžeme zo zoznamu čísel vytvoriť maticu.

123456789101112131415161718192021 Funkcia 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 na No_Of_Cols_in_output, 1 Na No_of_Rows_in_output)Dim No_Of_Elements_In_Vector as integerDim Col_Count ako celé číslo, Row_Count ako celé čísloNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Odstráňte NULL podmienkyAk funkcia Vector_Range nie je nič, ukončite funkciuAk No_Of_Cols_in_output = 0, potom funkciu ukončiteAk No_of_Rows_in_output = 0, potom funkciu ukončiteAk No_Of_Elements_In_Vector = 0, potom funkciu ukončitePre Col_Count = 1 až No_Of_Cols_in_outputPre Row_Count = 1 do No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Ďalší riadok_PočetNasledujúce Col_CountCreate_Matrix = Temp_ArrayKoncová funkcia

Maticu môžeme vytvoriť v našom hárku programu Excel zavolaním vyššie uvedenej funkcie.

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

Premeňte maticu na jednoradový vektor

Alternatívne môžete chcieť previesť maticu na jeden riadok. Zvážte nižšie uvedenú maticu.

Pomocou nižšie uvedenej funkcie to môžeme previesť na pole jednej dimenzie.

12345678910111213141516171819202122 Funkcia Create_Vector (Matrix_Range As Range) As VariantDim No_of_Cols as Integer, No_Of_Rows as IntegerDim i As IntegerDim j ako celé číslo'vyzdvihnite riadky a stĺpce z maticeNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Odstráňte NULL podmienkyAk Matrix_Range nie je nič, ukončite funkciuAk No_of_Cols = 0, potom funkciu ukončiteAk No_Of_Rows = 0, potom funkciu ukončite'slučka cez pole - prvý prvokPre j = 1 do No_Of_Rows'teraz slučkou cez druhý prvokPre i = 0 do No_of_Cols - 1'priradiť dočasné pole jednej dimenzieTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Ďalej iĎalej jCreate_Vector = Temp_ArrayKoncová funkcia

Teraz môžeme túto funkciu zavolať pomocou nižšie uvedeného postupu.

1234567891011 Sub GenerateVector ()Dim Vector () ako variantDim k ako celé čísloDim No_of_Elements'získať poleVektor = Create_Vector (Listy („List1“). Rozsah („A1: D5“))'slučkou cez pole a naplňte hárokPre k = 0 až UBound (vektor) - 1Tabuľky ("List1"). Rozsah ("G1"). Ofset (k, 0). Hodnota = Vektor (k + 1)Ďalej kKoniec pod

Tento postup vráti nasledujúci výsledok.

Použitie WorksheetFunction.MMULT na vytvorenie maticového poľa

Pozrite sa na nasledujúcu tabuľku.

Nasledujúci postup môžeme použiť na výpočet výšky úroku pre vyššie uvedenú sieť na základe úrokovej sadzby a sumy, ktorú si chce osoba požičať.

123456789101112 Sub UseMMULT ()Dim rngIntRate As RangeDim rngAmtLoan As RangeStlmiť výsledok () ako variant„naplňte naše objekty rozsahuNastaviť rngIntRate = rozsah ("B4: B9")Nastaviť rngAmtLoan = rozsah ("C3: H3")'Na vyplnenie poľa výsledkov použite vzorec MMULTVýsledok = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)„vyplňte hárokRozsah ("C4: H9") = VýsledokKoniec pod

V hárku vyššie si všimnete, že vyššie uvedený postup napĺňa bunky hodnotami, nie vzorcami - pozri C4 vo vyššie uvedenom obrázku - má v sebe hodnotu 200, nie vzorec. Pomocou Pracovný listFunkcia metóda vždy vráti do pracovného hárka statickú hodnotu a nie vzorec. To znamená, že ak sa zmení úroková sadzba alebo výška pôžičky, zodpovedajúce hodnoty vo vyplnenej matici NEBUDE zmeniť.

Namiesto použitia WorksheetFunction.MMULT, môžete použiť VBA na použitie funkcie MMULT na bunku pomocou FormulaArray metóda.

123 Podkladová vložkaMMULT ()Rozsah ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Koniec pod

Všimnite si, že teraz, keď je tabuľka vyplnená, sa v bunkách použije vzorec.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave