Матриця VBA - Створення та інше

Цей підручник покаже вам, як створити матрицю за допомогою масиву у 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

Зверніть увагу, що зараз, коли електронна таблиця заповнюється, у комірки використовується формула.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave