VBA Genomsnitt - GENNOMSNITT, GENNEMSNITT, GENomsnitt

Denna handledning visar dig hur du använder Excel -genomsnittsfunktionen i VBA.

Funktionen Excel -GENNEMSNITT används för att beräkna ett medelvärde från en rad celler i ditt kalkylblad som har värden i dem. I VBA nås den med metoden WorksheetFunction.

GENNOMSNITT Arbetsblad Funktion

Objektet WorksheetFunction kan användas för att anropa de flesta Excel -funktioner som är tillgängliga i dialogrutan Infoga funktion i Excel. AVERAGE -funktionen är en av dem.

123 SubtestfunktionRange ("D33") = Application.WorksheetFunction.Average ("D1: D32")Avsluta Sub

Du kan ha upp till 30 argument i AVERAGE -funktionen. Var och en av argumenten måste referera till ett cellområde.

Detta exempel nedan kommer att producera genomsnittet av summan av cellerna B11 till N11

123 Deltest Genomsnitt ()Range ("O11") = Application.WorksheetFunction.Average (Range ("B11: N11"))Avsluta Sub

Exemplet nedan ger ett genomsnitt av summan av cellerna i B11 till N11 och summan av cellerna i B12: N12. Om du inte skriver applikationsobjektet antas det.

123 Deltest Genomsnitt ()Range ("O11") = WorksheetFunction.Average (Range ("B11: N11"), Range ("B12: N12"))Avsluta Sub

Tilldela en GENomsnittligt resultat till en variabel

Du kanske vill använda resultatet av din formel någon annanstans i koden istället för att skriva det direkt tillbaka till ett Excel -intervall. Om så är fallet kan du tilldela resultatet till en variabel som ska användas senare i din kod.

1234567 Sub AssignAverage ()Dim resultat Som heltal'Tilldela variabelnresult = WorksheetFunction.Average (intervall ("A10: N10"))'Visa resultatetMsgBox "Medelvärdet för cellerna i detta intervall är" & resultatAvsluta Sub

GENNOMSNITT med ett avståndsobjekt

Du kan tilldela en grupp celler till Range -objektet och sedan använda det Range -objektet med ArbetsbladFunktion objekt.

123456789 Sub TestAverageRange ()Dim rng As Range'tilldela cellintervalletStäll in rng = Range ("G2: G7")'använd intervallet i formelnRange ("G8") = WorksheetFunction.Average (rng)'släpp intervallobjektetStäll in rng = ingentingAvsluta Sub

GENNOMSNITT Multiple Range Objects

På samma sätt kan du beräkna genomsnittet av cellerna från flera intervallobjekt.

123456789101112 Sub TestAverageMultipleRanges ()Dim rngA As RangeDim rngB som intervall'tilldela cellintervalletStäll in rngA = Range ("D2: D10")Ställ in rngB = Range ("E2: E10")'använd intervallet i formelnRange ("E11") = WorksheetFunction.Average (rngA, rngB)'släpp intervallobjektetStäll in rngA = ingentingStäll in rngB = IngentingAvsluta Sub

Använda AVERAGEA

AVERAGEA -funktionen skiljer sig från AVERAGE -funktionen genom att den skapar ett medelvärde från alla celler i ett område, även om en av cellerna har text i den - den ersätter texten med en nolla och inkluderar den vid beräkning av genomsnittet. AVERAGE -funktionen ignorerar den cellen och tar inte med den i beräkningen.

123 Deltest GenomsnittA ()Range ("B8) = Application.WorksheetFunction.AverageA (Range (" A10: A11 "))Avsluta Sub

I exemplet nedan returnerar AVERAGE -funktionen ett annat värde till AVERAGEA -funktionen när beräkningen används på cellerna A10 till A11

Svaret för AVERAGEA -formeln är lägre än MEDEL -formeln eftersom det ersätter texten i A11 med en noll och därför i genomsnitt över 13 värden i stället för de 12 värden som GENomsnittet beräknar över.

Använda AVERAGEIF

Med AVERAGEIF -funktionen kan du genomsnittliga summan av ett cellintervall som uppfyller ett visst kriterium.

123 Undergenomsnitt Om ()Range ("F31") = WorksheetFunction.AverageIf (Range ("F5: F30"), "Savings", Range ("G5: G30"))Avsluta Sub

Proceduren ovan ger bara medelvärde för cellerna i intervallet G5: G30 där motsvarande cell i kolumn F har ordet "Besparingar" i den. Kriterierna du använder måste stå i citattecken.

Nackdelar med WorksheetFunction

När du använder ArbetsbladFunktion för att genomsnittliga värdena i ett intervall i kalkylbladet returneras ett statiskt värde, inte en flexibel formel. Det betyder att när dina siffror i Excel ändras, värdet som har returnerats av ArbetsbladFunktion kommer inte att förändras.

I exemplet ovan har proceduren TestAverage -proceduren skapat genomsnittet av B11: M11 och lagt svaret i N11. Som du kan se i formelfältet är detta resultat en siffra och inte en formel.

Om något av värdena därför ändras i intervallet (B11: M11), kommer resultaten i N11 INTE förändra.

Istället för att använda Arbetsblad Funktion. Genomsnitt, kan du använda VBA för att tillämpa AVERAGE -funktionen på en cell med Formel eller FormelR1C1 metoder.

Med hjälp av formelmetoden

Med formelmetoden kan du peka specifikt på ett cellintervall, t.ex.: B11: M11 enligt nedan.

123 Sub TestAverageFormula ()Område ("N11"). Formel = "= Genomsnitt (B11: M11)"Avsluta Sub

Använda FormulaR1C1 -metoden

FomulaR1C1 -metoden är mer flexibel eftersom den inte begränsar dig till ett angivet cellintervall. Exemplet nedan ger oss samma svar som ovan.

123 Sub TestAverageFormula ()Område ("N11"). Formel = "= Genomsnitt (RC [-12]: RC [-1])"Avsluta Sub

För att göra formeln mer flexibel kan vi dock ändra koden så här:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Antal (R [-11] C: R [-1] C)"Avsluta Sub

Var du än befinner dig i ditt kalkylblad, kommer formeln att genomsnitta värdena i de 12 cellerna direkt till vänster om det och placera svaret i din ActiveCell. Området inuti AVERAGE -funktionen måste hänvisas till med syntaxen Rad (R) och Kolumn (C).

Båda dessa metoder gör att du kan använda dynamiska Excel -formler inom VBA.

Det kommer nu att finnas en formel i N11 istället för ett värde.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave