In Excel is het mogelijk om automatisch willekeurige waarden te genereren.
Dit houdt in dat een waarde uit een reeks van waarden, met een begin- en eindpunt, via een toevalsgenerator geselecteerd wordt. Een toevalsgenerator (random number generator) is gebaseerd op een algoritme, oftewel een berekening die zorgdraagt voor de willekeurige selectie.
Met behulp van de ingebouwde Excel functies: 'ASELECT', 'ASELECTTUSSEN' en 'KIEZEN' kunnen deze berekeningen tot stand worden gebracht.
In het bovenstaande voorbeeld zijn zes voorbeelden per gegevenstype (1e kolom) uiteengezet. In de kolom [Functie als tekst] zijn de functies als tekst ingesteld voor de beeldvorming.
Het gebruik van willekeurige waarden in Excel kan handig zijn wanneer het bijvoorbeeld gewenst is om te werken met fictieve gegevens in de plaats van bedrijfsgevoelige gegevens. Ook kan het werken met willekeurige waarden een uitkomst bieden bij presentaties en/of trainingen.
De functie 'ASELECTBEREIK' is een zelf gedefinieerde functie die met behulp van de onderstaande VBA-code is ontwikkeld. Via deze functie kan een bereik worden geselecteerd - zoals in het bovenstaande voorbeeld F2:F11 - die als bron fungeert voor de willekeurige selectie.
'----------------------------------------------------------------------------------------------------------------------- ' Auteur : pascalterheege.nl ' Datum : 5-6-2016 ' Object : modFunctie ' Doel : willekeurige selectie berekenen a.d.h.v. een ingegeven bereik ' Bron : '----------------------------------------------------------------------------------------------------------------------- Option Explicit '----------------------------------------------------------------------------------------------------------------------- ' Datum : 12-6-2016 ' Type : Subroutine ' ' Int(Bereik.Count * Rnd + 1) ' Omschrijving Toelichting Voorbeeld ' 1. Bereik.count aantal waarden bereik 10 ' 2. Rnd genereert willekeurig getal tussen 0 en 1 0,7795186 ' 3. Formule 10 * 0,7795186 + 1 8,795186 ' 4. Int rond altijd naar beneden af 8 '----------------------------------------------------------------------------------------------------------------------- Function ASELECTBEREIK(Bereik As Range) Dim i As Integer i = Int(Bereik.Count * Rnd + 1) ASELECTBEREIK = Bereik.Cells(i).Value End Function
De ingebouwde Excel functies zijn volgens dit artikel gebaseerd op de Mersenne Twister algoritme. De VBA functie Rnd is volgens hetzelfde artikel gebaseerd op de Linear Congruential Generator.
Download hier het oefenbestand.