Овај водич ће вам показати како да користите функције Екцел СУМИФ и СУМИФС у ВБА
ВБА нема еквивалент СУМИФ или СУМИФС функција које можете да користите - корисник мора да користи уграђене Екцел функције у ВБА користећи ВоркСхеетФунцтион објекат.
СУМИФ радни лист Функција
Објекат ВорксхеетФунцтион се може користити за позивање већине Екцел функција које су доступне у оквиру за дијалог Инсерт Фунцтион у Екцелу. СУМИФ функција је једна од њих.
123 | Суб ТестСумИф ()Опсег ("Д10") = Апплицатион.ВорксхеетФунцтион.СумИф (Опсег ("Ц2: Ц9"), 150, Опсег ("Д2: Д9"))Енд Суб |
Горе наведени поступак ће збрајати ћелије у опсегу (Д2: Д9) само ако је одговарајућа ћелија у колони Ц = 150.
Додељивање резултата СУМИФ променљивој
Можда ћете желети да користите резултат своје формуле на другом месту у коду уместо да га записујете директно у Екцел опсег. У том случају резултат можете доделити променљивој која ће се касније користити у коду.
1234567 | Суб АссигнСумИфВариабле ()Затамните резултат као двоструки'Доделите променљивуресулт = ВорксхеетФунцтион.СумИф (Опсег ("Ц2: Ц9"), 150, Опсег ("Д2: Д9"))'Покажи резултатМсгБок "Укупан резултат који одговара 150 коду продаје је" & резултатЕнд Суб |
Коришћење СУМИФС -а
Функција СУМИФС је слична функцији СУМИФ ВорксхеетФунцтион, али вам омогућава да проверите више критеријума. У доњем примеру покушавамо да саберемо продајну цену ако је шифра продаје 150 И цена коштања већа од 2. Уочите да је у овој формули распон ћелија за сабирање испред критеријума, док у функцији СУМИФ је иза.
123 | Суб МултиплеСумИфс ()Опсег ("Д10") = Функција радног листа.СумИфс (Опсег ("Д2: Д9"), Опсег ("Ц2: Ц9"), 150, Опсег ("Е2: Е9"), "> 2")Енд Суб |
Коришћење СУМИФ -а са објектом опсега
Објекту Ранге можете доделити групу ћелија, а затим користити тај објекат Ранге са ВорксхеетФунцтион објекат.
123456789101112 | Суб ТестСумИФРанге ()Дим рнгЦритериа Ас РангеДим рнгСум ас Ранге'доделите опсег ћелијаПодеси рнгЦритериа = Распон ("Ц2: Ц9")Постави рнгСум = Опсег ("Д2: Д9")'користите опсег у формулиОпсег ("Д10") = Функција радног листа.СумИф (рнгЦритериа, 150, рнгСум)'отпустите објекте опсегаСет рнгЦритериа = НиштаПоставите рнгСум = НиштаЕнд Суб |
Коришћење СУМИФС -а на објектима више опсега
Слично, можете користити СУМИФС на више објеката опсега.
123456789101112131415 | Суб ТестСумМултиплеРангес ()Дим рнгЦритериа1 Ас РангеДим рнгЦритериа2 ас РангеДим рнгСум ас Ранге'доделите опсег ћелијаПодеси рнгЦритериа1 = Опсег ("Ц2: Ц9")Подеси рнгЦритериа2 = Распон ("Е2: Е10")Подеси рнгСум = Опсег ("Д2: Д10")'користите опсеге у формулиОпсег ("Д10") = Функција радног листа.СумИфс (рнгСум, рнгЦритериа1, 150, рнгЦритериа2, "> 2")'отпустите објекат опсегаПоставите рнгЦритериа1 = НиштаПоставите рнгЦритериа2 = НиштаПоставите рнгСум = НиштаЕнд Суб |
Имајте на уму да зато што користите знак већи од, критеријуми већи од 2 морају бити у заградама.
СУМИФ Формула
Када користите ВорксхеетФунцтион.СУМИФ да бисте додали збир опсегу на радном листу, враћа се статички збир, а не флексибилна формула. То значи да када се ваше бројке у Екцелу промене, вредност коју је вратио ВорксхеетФунцтион неће се променити.
У горњем примеру, процедура је збрајала опсег (Д2: Д9) где је СалеЦоде једнак 150 у колони Ц, а резултат је стављен у Д10. Као што можете видети на траци са формулама, овај резултат је бројка, а не формула.
Ако се било која од вредности промени у распону (Д2: Д9) или у опсегу (Ц2: Д9), резултат у Д10 ће НЕ промена.
Уместо да користите ВорксхеетФунцтион.СумИф, можете користити ВБА за примену функције СУМИФ на ћелију помоћу Формула или ФормулаР1Ц1 методе.
Метода формуле
Метода формуле вам омогућава да посебно покажете на низ ћелија, на пример: Д2: Д10 као што је приказано испод.
123 | Суб ТестСумИф ()Опсег ("Д10"). Формула Р1Ц1 = "= СУМИФ (Ц2: Ц9,150, Д2: Д9)"Енд Суб |
ФормулаР1Ц1 Метода
Метода ФормулаР1Ц1 је флексибилнија по томе што вас не ограничава на задати опсег ћелија. Следећи пример ће нам дати исти одговор као и претходни.
123 | Суб ТестСумИф ()Опсег ("Д10"). Формула Р1Ц1 = "= СУМИФ (Р [-8] Ц [-1]: Р [-1] Ц [-1], 150, Р [-8] Ц: Р [-1] Ц ) "Енд Суб |
Међутим, како бисмо формулу учинили флексибилнијом, могли бисмо изменити код да изгледа овако:
123 | Суб ТестСумИф ()АцтивеЦелл.ФормулаР1Ц1 = "= СУМИФ (Р [-8] Ц [-1]: Р [-1] Ц [-1], 150, Р [-8] Ц: Р [-1] Ц)"Енд Суб |
Где год да се налазите на свом радном листу, формула ће затим додати ћелије које испуњавају критеријуме директно изнад ње и одговор ће сместити у вашу АцтивеЦелл. Распон унутар функције СУМИФ мора се позвати користећи синтаксу Ред (Р) и Колона (Ц).
Обе ове методе омогућавају вам да користите динамичке Екцел формуле у оквиру ВБА.
У Д10 ће сада уместо вредности бити формула.