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.