Onderwerp


Excel beschikt over heel veel functies. Toch komt het wel eens voor dat je een functie nodig hebt die Excel niet levert. Veel gebruikers proberen dit gemis op te lossen via het invoegen van hulptabellen in combinatie met de wel beschikbare functies. Op zich is dat niet nodig, want als je een beetje handig bent met VBA, kun je iedere functie zelf bouwen. In dit voorbeeld gaat het om een functie die het aantal unieke waarden in een bereik telt.



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 Tel_Unieke_Waarden(rngInput As Range) As Long
Dim rngCel As Range
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
Tel_Unieke_Waarden = Unieke_Waarden.Count
End Function



Hoe het werkt.

De functie telt de unieke waarden van een bepaald bereik (
rngInput). 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.