ВБА Матрик - Креирајте и још много тога

Овај водич ће вам показати како да креирате матрицу помоћу низа у ВБА.

Матрица је правоугаони низ бројева са истом количином редова и колона. Можете креирати матрицу у ВБА попуњавањем променљивих Арраи и коришћењем ВБА петљи.

Креирање матрице у ВБА

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)"Енд Суб

Имајте на уму да се сада, када се табела попуни, у ћелијама користи формула.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave