VBA Средно - СРЕДНО, СРЕДНО, СРЕДНО

Този урок ще ви покаже как да използвате средната функция на Excel във VBA.

Функцията Excel AVERAGE се използва за изчисляване на средна стойност от клетки в диапазона във вашия работен лист, които имат стойности в тях. Във VBA достъпът се осъществява чрез метода WorksheetFunction.

СРЕДНА Функция на работен лист

Обектът WorksheetFunction може да се използва за извикване на повечето от функциите на Excel, които са налични в диалоговия прозорец Вмъкване на функция в Excel. Функцията AVERAGE е една от тях.

123 Субтестова функцияДиапазон ("D33") = Application.WorksheetFunction.Average ("D1: D32")End Sub

Можете да имате до 30 аргумента във функцията AVERAGE. Всеки от аргументите трябва да се отнася до диапазон от клетки.

Този пример по -долу ще даде средната стойност на сумата от клетките B11 до N11

123 Sub TestAverage ()Диапазон ("O11") = Application.WorksheetFunction.Average (Range ("B11: N11"))End Sub

Примерът по -долу ще даде средно от сумата на клетките в В11 до N11 и сумата от клетките в В12: N12. Ако не въведете обекта Application, той ще се приеме.

123 Sub TestAverage ()Диапазон ("O11") = Функция на работен лист. Средна стойност (Обхват ("B11: N11"), Обхват ("B12: N12"))End Sub

Присвояване на СРЕДЕН резултат на променлива

Може да искате да използвате резултата от формулата си другаде в кода, вместо да го записвате директно в диапазон на Excel. Ако случаят е такъв, можете да присвоите резултата на променлива, която да използвате по -късно във вашия код.

1234567 Sub AssignAverage ()Затъмняване на резултата Като цяло число'Задайте променливатаresult = WorksheetFunction.Average (Range ("A10: N10"))'Покажете резултатаMsgBox "Средната стойност за клетките в този диапазон е" & резултатEnd Sub

AVERAGE с Range Object

Можете да присвоите група клетки на обекта Range и след това да използвате този Range обект с Работен лист Функция обект.

123456789 Sub TestAverageRange ()Dim rng As Range'задайте диапазона от клеткиЗадайте rng = Обхват ("G2: G7")'използвайте диапазона във формулатаДиапазон ("G8") = Функция на работен лист. Средна стойност (rng)'освободете обекта rangeЗадайте rng = НищоEnd Sub

СРЕДНИ Обекти с множество обхвати

По същия начин можете да изчислите средната стойност на клетките от множество Range Objects.

123456789101112 Sub TestAverageMultipleRanges ()Dim rngA As RangeDim rngB като Range'задайте диапазона от клеткиЗадайте rngA = Обхват ("D2: D10")Задайте rngB = Обхват ("E2: E10")'използвайте диапазона във формулатаДиапазон ("E11") = Функция на работен лист. Средна стойност (rngA, rngB)'освободете обекта rangeЗадайте rngA = НищоЗадайте rngB = НищоEnd Sub

Използване на AVERAGEA

Функцията AVERAGEA се различава от функцията AVERAGE по това, че създава средна стойност от всички клетки в диапазон, дори ако една от клетките има текст в нея - тя замества текста с нула и включва това при изчисляване на средната стойност. Функцията AVERAGE ще игнорира тази клетка и няма да я включи в изчислението.

123 Sub TestAverageA ()Диапазон ("B8) = Application.WorksheetFunction.AverageA (Range (" A10: A11 "))End Sub

В примера по -долу функцията AVERAGE връща различна стойност на функцията AVERAGEA, когато изчислението се използва за клетки A10 до A11

Отговорът за формулата AVERAGEA е по -нисък от формулата AVERAGE, тъй като заменя текста в A11 с нула и следователно усреднява над 13 стойности, а не 12 стойности, които AVERAGE изчислява.

Използване на AVERAGEIF

Функцията AVERAGEIF ви позволява да осредните сумата от диапазон от клетки, които отговарят на определени критерии.

123 Под средно Ако ()Диапазон ("F31") = Функция на работен лист.AverageIf (Диапазон ("F5: F30"), "Спестявания", Обхват ("G5: G30"))End Sub

Горната процедура ще осредни само клетките в диапазон G5: G30, където съответната клетка в колона F съдържа думата „Спестявания“ в нея. Критериите, които използвате, трябва да бъдат в кавички.

Недостатъци на функцията на работния лист

Когато използвате Работен лист Функция за да усредните стойностите в диапазон във вашия работен лист, се връща статична стойност, а не гъвкава формула. Това означава, че когато вашите цифри в Excel се променят, стойността, която е била върната от Работен лист Функция няма да се промени.

В горния пример процедурата TestAverage процедурата е създала средната стойност на B11: M11 и е поставила отговора в N11. Както можете да видите в лентата с формули, този резултат е цифра, а не формула.

Следователно, ако някоя от стойностите се промени в диапазона (B11: M11), резултатите в N11 ще НЕ промяна.

Вместо да използвате Работен лист Функция. Средно, можете да използвате VBA, за да приложите СРЕДНАТА функция към клетка, като използвате Формула или Формула R1C1 методи.

Използвайки метода на формулата

Методът на формулата ви позволява да посочите конкретно диапазон от клетки, например: B11: M11, както е показано по -долу.

123 Sub TestAverageFormula ()Обхват ("N11"). Формула = "= Средно (B11: M11)"End Sub

Използване на метода FormulaR1C1

Методът FomulaR1C1 е по -гъвкав, тъй като не ви ограничава до определен диапазон от клетки. Примерът по -долу ще ни даде същия отговор като този по -горе.

123 Sub TestAverageFormula ()Обхват ("N11"). Формула = "= Средно (RC [-12]: RC [-1])"End Sub

За да направим формулата по -гъвкава, бихме могли да променим кода така, че да изглежда така:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Брой (R [-11] C: R [-1] C)"End Sub

Където и да сте в работния си лист, формулата ще осредни стойностите в 12 -те клетки директно вляво от него и ще постави отговора във вашия ActiveCell. Обхватът във функцията AVERAGE трябва да бъде посочен чрез синтаксиса на ред (R) и колона (C).

И двата метода ви позволяват да използвате формули за динамичен Excel в рамките на VBA.

Сега ще има формула в N11 вместо стойност.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave