Onderwerp


Unieke waarden optellen

De vorige tip ging over een functie die het aantal unieke waarden in een bereik telt. Op nagenoeg dezelfde wijze maak je een functie die de som van het aantal unieke waarden in dat bereik optelt.



Informatie


Om de functie te kunnen gebruiken, moet je de onderstaande code in een module in de VBA editor plakken. Dit moet een module zijn, want anders werkt de functie niet. Nadat je dit gedaan hebt kun je de functie net als elke andere functie in het werkboek gebruiken. Als je de functie in alle werkboeken wilt kunnen gebruiken, moet je de functie in een module van het werkboek PERSONAL.XLS plaatsen.

Een werkboek met dit voorbeeld kun je
hier downloaden.



Option Explicit
Function Som_Unieke_Waarden(rngInput As Range) As Double
Dim rngCel As Range
Dim Unieke_Waarde As Variant
Dim Unieke_Waarden As New Collection

Application.Volatile

On Error Resume Next

For Each rngCel In rngInput
Unieke_Waarden.Add rngCel.Value, CStr(rngCel.Value)
Next rngCel

Som_Unieke_Waarden = 0

For Each Unieke_Waarde In Unieke_Waarden
Som_Unieke_Waarden = Som_Unieke_Waarden + Unieke_Waarde
Next Unieke_Waarde
End Function



Hoe het werkt.

De functie telt de unieke waarden van een bepaald bereik (
rngInput) op. De functie maakt gebruik van het feit dat een collectie (Unieke_Waarden) slechts items kan bevatten met een unieke sleutel.
De functie bevat verder ook de regel
Application.Volatile. Dit betekent dat de functie altijd moet worden herberekend als er een wijziging plaatsvindt in een van de cellen in het werkblad.
De functie
CStr converteert een numerieke waarde naar een string. Als de celwaarde een numerieke waarde is, geeft CStr als resultaat een tekenreeks met dat getal.