Овај водич ће вам показати како да креирате матрицу помоћу низа у ВБА.
Матрица је правоугаони низ бројева са истом количином редова и колона. Можете креирати матрицу у ВБА попуњавањем променљивих Арраи и коришћењем ВБА петљи.
Креирање матрице у ВБА
123456789101112131415 | Суб ЦреатеСимплеМатрик ()Дим матрик () Ас ИнтегерДим к, и, ј, к Као цео број'поново затамните величину низаРеДим матрица (1 до 3, 1 до 3) као цео бројк = 1За и = 1 до 3За ј = 1 до 3матрица (и, ј) = кк = (к + 1)Следеће јЗатим сам'врати резултат у листу у једном потезуОпсег ("А1: Ц3") = матрицаЕнд Суб |
Покретање горње процедуре ће вратити једноставну матрицу у опсег („А1: Ц3“) на ваш радни лист.
Претворите вектор једног реда у матрицу
Размотрите колону бројева испод. Можда ћете у одређеној фази пожелети да конвертујете колону бројева у матрицу.
Користећи доњу функцију, можемо креирати матрицу са листе бројева.
123456789101112131415161718192021 | Функција Цреате_Матрик (Вецтор_Ранге Ас Ранге, Но_Оф_Цолс_ин_оутпут Ас Интегер, Но_оф_Ровс_ин_оутпут Ас Интегер) Ас ВариантРеДим Темп_Арраи (1 до Но_Оф_Цолс_ин_оутпут, 1 То Но_оф_Ровс_ин_оутпут)Дим Но_Оф_Елементс_Ин_Вецтор Ас ИнтегерЗатамни Цол_Цоунт као цео број, Ров_Цоунт као цео бројНо_Оф_Елементс_Ин_Вецтор = Вецтор_Ранге.Ровс.Цоунт'Уклоните НУЛЛ условеАко Вецтор_Ранге није ништа, изађите из функцијеАко је Но_Оф_Цолс_ин_оутпут = 0 Затим изађите из функцијеАко је Но_оф_Ровс_ин_оутпут = 0 Затим изађите из функцијеАко је Но_Оф_Елементс_Ин_Вецтор = 0, тада изађите из функцијеФор Цол_Цоунт = 1 За Но_Оф_Цолс_ин_оутпутЗа Ров_Цоунт = 1 до Но_оф_Ровс_ин_оутпутТемп_Арраи (Цол_Цоунт, Ров_Цоунт) = Вецтор_Ранге.Целлс ((((Но_оф_Ровс_ин_оутпут) * (Цол_Цоунт - 1) + Ров_Цоунт), 1)Следећи ред_бројСледећи Цол_ЦоунтЦреате_Матрик = Темп_АрраиЗавршна функција |
Матрицу можемо креирати у нашем Екцел листу позивањем горње функције.
123 | Суб ЦонвертТоМатрик ()Опсег ("Ц1: Х2") = Цреате_Матрик (Опсег ("А1: А10"), 2, 6)Енд Суб |
Претворите матрицу у вектор једног реда
Алтернативно, можда ћете желети да претворите матрицу у један ред. Размотрите Матрицу испод.
Користећи доњу функцију, ово можемо претворити у низ са једном димензијом.
12345678910111213141516171819202122 | Функција Цреате_Вецтор (Матрик_Ранге Ас Ранге) Као варијантаДим Но_оф_Цолс Ас Интегер, Но_Оф_Ровс Ас ИнтегерДим и Ас ИнтегерДим ј Као цео број'покупите редове и колоне из матрицеНо_оф_Цолс = Матрик_Ранге.Цолумнс.ЦоунтНо_Оф_Ровс = Матрик_Ранге.Ровс.ЦоунтРеДим Темп_Арраи (Но_оф_Цолс * Но_Оф_Ровс)'Уклоните НУЛЛ условеАко Матрик_Ранге није ништа, изађите из функцијеАко је Но_оф_Цолс = 0, тада изађите из функцијеАко је Но_Оф_Ровс = 0 Затим изађите из функције'петља кроз низ - први елементЗа ј = 1 За Но_Оф_Ровс'сада прођите кроз други елементЗа и = 0 до Но_оф_Цолс - 1'доделити привременом низу једне димензијеТемп_Арраи ((и * Но_Оф_Ровс) + ј) = Матрик_Ранге.Целлс (ј, и + 1)Затим самСледеће јЦреате_Вецтор = Темп_АрраиЗавршна функција |
Ову функцију сада можемо позвати помоћу доње процедуре.
1234567891011 | Суб ГенератеВецтор ()Дим Вецтор () као варијантаДим к Као цео бројДим Но_оф_Елементс'узми низВецтор = Цреате_Вецтор (Схеетс ("Схеет1"). Ранге ("А1: Д5"))'прођите кроз низ и попуните листЗа к = 0 За УБоунд (вектор) - 1Табеле („Лист1“). Опсег („Г1“). Помак (к, 0) .Вредност = Вектор (к + 1)Следеће кЕнд Суб |
Ова процедура ће вратити следећи резултат.
Коришћење ВорксхеетФунцтион.ММУЛТ за креирање матричног низа
Размотрите следећу табелу.
Можемо користити доњи поступак за израчунавање износа камате за горњу табелу на основу каматне стопе и износа који особа жели да позајми.
123456789101112 | Помоћна употребаММУЛТ ()Дим рнгИнтРате Ас РангеДим рнгАмтЛоан Ас РангеДим Ресулт () Ас Вариант'попуњавају наше објекте дометаПостави рнгИнтРате = Опсег ("Б4: Б9")Подеси рнгАмтЛоан = Опсег ("Ц3: Х3")'користите формулу ММУЛТ за попуњавање матрице резултатаРезултат = Функција радног листа.ММулт (рнгИнтРате, рнгАмтЛоан)'попуни листОпсег ("Ц4: Х9") = РезултатЕнд Суб |
Приметићете на горњој табели да горња процедура попуњава ћелије вредностима уместо формулама - погледајте Ц4 на горњој слици - у њој је вредност 200, а не формула. Помоћу ВорксхеетФунцтион метход увек враћа статичку вредност на радни лист, а не формулу. То значи да ако се каматна стопа или износ кредита промене, одговарајуће вредности у попуњеној матрици НЕЋЕ промена.
Уместо да користите ВорксхеетФунцтион.ММУЛТ, можете користити ВБА за примену ММУЛТ функције на ћелију помоћу ФормулаАрраи метода.
123 | Суб ИнсертММУЛТ ()Опсег ("Ц4: Х9"). ФормулаАрраи = "= ММУЛТ (Б4: Б9, Ц3: Х3)"Енд Суб |
Имајте на уму да се сада, када се табела попуни, у ћелијама користи формула.