Цей підручник покаже вам, як створити матрицю за допомогою масиву у VBA.
Матриця - це прямокутний масив чисел з однаковою кількістю рядків і стовпців. Ви можете створити матрицю у VBA, заповнивши змінні масиву та використовуючи цикли VBA.
Створення матриці у VBA
123456789101112131415 | Sub CreateSimpleMatrix ()Матриця затемнення () Як ціле числоDim x, i, j, k Як ціле число'зменшити розмір масивуМатриця ReDim (1 до 3, 1 до 3) як ціле числоx = 1Для i = 1 до 3Для j = 1 до 3матриця (i, j) = xx = (x + 1)Далі jДалі i'повернути результат на аркуш за один разДіапазон ("A1: C3") = матрицяEnd Sub |
Запуск наведеної вище процедури поверне просту матрицю до діапазону (“A1: C3”) на ваш робочий аркуш.
Перетворити вектор однорядного рядка в матрицю
Розглянемо стовпець чисел нижче. Ви можете на певному етапі перетворити стовпець чисел у матрицю.
За допомогою наведеної нижче функції ми можемо створити матрицю зі списку чисел.
123456789101112131415161718192021 | Функція Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) Як варіантReDim Temp_Array (від 1 до No_Of_Cols_in_output, 1 до No_of_Rows_in_output)Затемнити No_Of_Elements_In_Vector як ціле числоDim Col_Count як ціле число, Row_Count як ціле числоNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Усуньте умови NULLЯкщо Vector_Range - це ніщо, закрийте функціюЯкщо No_Of_Cols_in_output = 0 Тоді вийдіть із функціїЯкщо No_of_Rows_in_output = 0 Тоді вийдіть з функціїЯкщо No_Of_Elements_In_Vector = 0 Тоді вийдіть з функціїFor Col_Count = 1 до No_Of_Cols_in_outputFor Row_Count = 1 до No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Далі Row_CountДалі Col_CountCreate_Matrix = Temp_ArrayФункція завершення |
Ми можемо створити матрицю на нашому аркуші Excel, викликавши функцію вище.
123 | Sub ConvertToMatrix ()Діапазон ("C1: H2") = Create_Matrix (Діапазон ("A1: A10"), 2, 6)End Sub |
Перетворіть матрицю в вектор однорядного рядка
Крім того, ви можете перетворити матрицю в єдиний рядок. Розглянемо матрицю нижче.
Використовуючи наведену нижче функцію, ми можемо перетворити це в одновимірний масив.
12345678910111213141516171819202122 | Функція Create_Vector (діапазон матриць як діапазон) як варіантDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i як ціле числоDim j Як ціле число'виберіть рядки та стовпці з матриціNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Матриця_Діапазон.Строки.КількістьReDim Temp_Array (No_of_Cols * No_Of_Rows)'Усуньте умови NULLЯкщо Matrix_Range - це ніщо, вийдіть із функціїЯкщо No_of_Cols = 0, то вийдіть із функціїЯкщо No_Of_Rows = 0, то вийдіть із функції'цикл через масив - перший елементДля j = 1 до No_Of_Rows'тепер прокручуємо другий елементДля i = 0 до No_of_Cols - 1'призначити тимчасовому масиву з одним виміромTemp_Array ((i * No_Of_Rows) + j) = Діапазон матриць. Клітинки (j, i + 1)Далі iДалі jCreate_Vector = Temp_ArrayФункція завершення |
Тепер ми можемо викликати цю функцію за допомогою наведеної нижче процедури.
1234567891011 | Sub GenerateVector ()Dim Vector () як варіантDim k Як ціле числоDim No_of_Elements'отримати масивVector = Create_Vector (Sheets ("Sheet1"). Діапазон ("A1: D5"))'прокрутіть масив і заповніть аркушДля k = 0 До UBound (вектор) - 1Аркуші ("Аркуш1"). Діапазон ("G1"). Зсув (k, 0). Значення = вектор (k + 1)Далі kEnd Sub |
Ця процедура поверне наступний результат.
Використання WorksheetFunction.MMULT для створення матричного масиву
Розглянемо таку електронну таблицю.
Ми можемо скористатися наведеною нижче процедурою для розрахунку суми відсотків за наведену вище таблицю на основі процентної ставки та суми, яку людина хоче позичити.
123456789101112 | Додаткове використанняMMULT ()Приглушити rngIntRate як діапазонПриглушити rngAmtLoan як діапазонDim Result () як варіант'заповнити наші об'єкти діапазонуВстановити rngIntRate = Діапазон ("B4: B9")Встановити rngAmtLoan = Діапазон ("C3: H3")'використовуйте формулу MMULT для заповнення масиву результатівРезультат = Робочий лист Функція.MMult (rngIntRate, rngAmtLoan)'заповнити аркушДіапазон ("C4: H9") = РезультатEnd Sub |
Ви помітите на наведеному вище аркуші, що вищенаведена процедура заповнює клітинки значеннями, а не формулами - див. C4 на графіку вище - у ньому є значення 200, а не формула. Використовуючи Робочий лист Функція метод завжди повертає на аркуш статичне значення, а не формулу. Це означає, що у разі зміни процентної ставки або суми кредиту відповідні значення у заповненій матриці НЕ БУДЕ зміна.
Замість того, щоб використовувати Робочий лист Функція.MMULT, ви можете використовувати VBA, щоб застосувати функцію MMULT до комірки за допомогою FormulaArray метод.
123 | Додаткова вставкаMMULT ()Діапазон ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"End Sub |
Зверніть увагу, що зараз, коли електронна таблиця заповнюється, у комірки використовується формула.