Beschikbaar in:Excel 2021 of nieuwer (Werkt in Excel 2021, elke latere versie, Microsoft 365 en Excel voor het web)Voorbeelden vragen Excel 2024 of nieuwerCategorie:Dynamische matrices

ASELECT.MATRIX

RANDARRAY in Engelstalige Excel

Vult een blok van elke gewenste grootte met willekeurige getallen, decimaal of heel, tussen grenzen die jij kiest, en trekt ze opnieuw bij elke herberekening.

Moeilijkheidsgraad 3 van 5. Vijf optionele argumenten zijn snel geleerd, maar het resultaat is vluchtig, loopt over, is niet te reproduceren, en hele getallen worden met herhaling getrokken, wat mensen verrast die een reeks verschillende waarden verwachten.

Laatst bijgewerkt: 13 oktober 2026

Bekijk de uitgewerkte voorbeelden

Fragment van het werkblad: in D2 staat de formule
RijABCD
1RelatieKlantSaldo 31-12-2025Lot
2D1001Brinkman Installatie BV€12,450.00€ 12.450,000.73160,7316=ASELECT.MATRIX(5)=ASELECT.MATRIX(5)
3D1002Bakkerij De Gouden Korst BV€3,820.50€ 3.820,500.20890,2089
4D1003Hoekstra Transport BV€27,915.75€ 27.915,750.55470,5547
5D1004Van der Meer Groenteteelt€1,640.00€ 1.640,000.09120,0912
6D1005Kuiper Metaalbewerking BV€8,095.20€ 8.095,200.88030,8803
Formulecel (D2)InvoerOverloopresultaat
=ASELECT.MATRIX(5)
=ASELECT.MATRIX(5)

Wat ASELECT.MATRIX doet en wanneer je het gebruikt

Wat het doet: het vult vanuit één cel een heel blok willekeurige getallen, met de rijen, kolommen, het minimum en het maximum die je kiest, decimaal of heel, bijvoorbeeld een willekeurige sleutel per factuur.

Wanneer je het gebruikt: om een testblad te vullen, een lijst te schudden met SORTEREN.OP, een steekproef te trekken of veel uitkomsten tegelijk na te bootsen. Voor één willekeurig heel getal is ASELECTTUSSEN korter en dat werkt in elke Excel-versie.

De drie grootste voordelen:

  • Eén formule, heel blok: het resultaat loopt over naar het aantal rijen en kolommen dat je opgeeft, zonder dat je een formule kopieert.
  • Bereik ingebouwd: min en max vervangen de omrekening die je bij ASELECT nodig hebt.
  • Hele getallen op verzoek: zet geheel_getal op WAAR in plaats van het resultaat af te ronden.

Hoe Excel de functie berekent

Excel gaat zo te werk:

  • het leest de vijf argumenten, vult 1, 1, 0, 1 en ONWAAR in voor wat je weglaat, en controleert of min niet boven max ligt
  • het trekt elke cel van het blok van rijen bij kolommen los van de andere: een decimaal getal tussen min en max, of met geheel_getal op WAAR een heel getal van min tot en met max, waarbij beide uiteinden mogelijk zijn
  • het laat het blok overlopen vanuit de formulecel

Let op: Elke herberekening, door een wijziging in de werkmap, het openen van het bestand of F9, trekt een volledig nieuw blok, en er is geen startwaarde waarmee je dezelfde getallen terugkrijgt. Zet een trekking die ertoe doet vast met kopiëren en als waarden plakken.

Denkmodel

Een bak dobbelstenen, één per cel, die samen worden gegooid zodra iemand de werkmap aanraakt; elke dobbelsteen valt op zichzelf, dus twee kunnen hetzelfde tonen.

Begrippen op deze pagina: werkmap, overloop, argument, bereik, cel

ASELECT.MATRIX([rijen], [kolommen], [min], [max], [geheel_getal])
ASELECT.MATRIX([rijen]; [kolommen]; [min]; [max]; [geheel_getal])
Argumenten
ArgumentSoortBetekenisStandaard
rijenOptioneelHoeveel rijen willekeurige getallen; standaard 1.1
kolommenOptioneelHoeveel kolommen willekeurige getallen; standaard 1.1
minOptioneelDe laagste toegestane waarde; standaard 0.0
maxOptioneelDe hoogste toegestane waarde; standaard 1.1
geheel_getalOptioneelWAAR voor hele getallen; ONWAAR of weggelaten voor decimale getallen.ONWAAR

Geeft terug:Een overlopend blok van rijen bij kolommen willekeurige getallen

Formules gebruiken komma's (,) tussen de argumenten, zoals in de Engelse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel; de Engelse Excel gebruikt komma's (,).

Uitgewerkte voorbeelden

Beginner

Een volgorde loten voor het opvolgen van debiteurenbevestigingen

Sanne de Vries controleert Veldhuis Installatie BV en heeft vijf debiteurenbevestigingen verstuurd per 31 december 2025. Ze wil op een zichtbare, onbevooroordeelde manier bepalen bij welke klant ze als eerste achter een antwoord aan gaat.

Elke klant krijgt een willekeurig getal; het laagste getal wordt als eerste opgevolgd. Ze trekt één keer en zet het resultaat daarna vast voor het dossier.

Fragment van het werkblad: in D2 staat de formule
RijABCDE
1RelatieKlantSaldo 31-12-2025Lot
2D1001Brinkman Installatie BV€12,450.00€ 12.450,000.73160,7316=ASELECT.MATRIX(5)=ASELECT.MATRIX(5)
3D1002Bakkerij De Gouden Korst BV€3,820.50€ 3.820,500.20890,2089
4D1003Hoekstra Transport BV€27,915.75€ 27.915,750.55470,5547
5D1004Van der Meer Groenteteelt€1,640.00€ 1.640,000.09120,0912
6D1005Kuiper Metaalbewerking BV€8,095.20€ 8.095,200.88030,8803
7
Formulecel (D2)InvoerOverloopresultaat

Formule in D2

=ASELECT.MATRIX(5)
=ASELECT.MATRIX(5)

Resultaat: 0.7316 / 0.2089 / 0.5547 / 0.0912 / 0.88030,7316 / 0,2089 / 0,5547 / 0,0912 / 0,8803Willekeurig: jouw uitkomst wijkt af

Stap voor stap
  1. rijen is 5. De andere vier argumenten zijn weggelaten, dus kolommen is 1, min is 0, max is 1 en geheel_getal is ONWAAR.
  2. Excel trekt 5 losse decimale getallen tussen 0 en 1 en laat ze overlopen van D2 tot D6. Stel dat het 0,7316, 0,2089, 0,5547, 0,0912 en 0,8803 trekt (op 4 decimalen); jouw getallen zijn anders, en dat hoort zo.
  3. Het laagste getal is 0,0912 in D5, naast D1004 (Van der Meer Groenteteelt, saldo 1,640.001.640,00), dus die klant wordt als eerste opgevolgd. Daarna D1002 (0,2089), D1003 (0,5547), D1001 (0,7316) en D1005 (0,8803).
  4. Typ ergens in het blad een opmerking en druk op Enter: alle vijf de getallen veranderen, omdat elke bewerking ASELECT.MATRIX herberekent. Kopieer D2:D6 zodra de volgorde definitief is en plak het als waarden over zichzelf, zodat de volgorde in het dossier te herleiden is.

Let op: Komt er een zesde klant bij in rij 7, dan trekt ASELECT.MATRIX(5) nog steeds maar vijf getallen en krijgt de nieuwe relatie er geen. Gebruik ASELECT.MATRIX(RIJEN(A2:A7)) zodat het aantal de lijst volgt.

Meer over dit voorbeeld: waarom het werkt, 1 variant

Waarom het werkt

Eén formule geeft elke klant een eigen, onafhankelijk getal, en met decimalen tussen 0 en 1 is een gelijke stand zo onwaarschijnlijk dat de volgorde duidelijk is. De trekking is onbevooroordeeld omdat geen enkel getal van een ander afhangt, en door de getallen vast te zetten wordt een levende trekking bewijs in het dossier.

Varianten

=ASELECT()
=ASELECT()

Eén willekeurig decimaal getal in één cel, de oudere manier: kopieer het vijf rijen naar beneden voor hetzelfde effect zonder overloop.

Halfgevorderd

Een raster hele testbedragen voor een test op ronde bedragen

Voordat de echte journaalposten van Veldhuis Installatie BV binnen zijn, bouwt Sanne de Vries haar blad voor journaalposttesten en heeft ze testgegevens nodig: vier boekstukken met elk drie regels, hele bedragen van 100 tot en met 5,0005.000.

Beide grenzen moeten mogelijk zijn, zodat ook de formules die precies ronde bedragen zoals 100 en 5,0005.000 markeren worden getest, en de bedragen moeten hele euro's zijn, zoals in de echte export.

Fragment van het werkblad: in B2 staat de formule
RijABCDE
1BoekstukRegel 1Regel 2Regel 3
225-041212501250=ASELECT.MATRIX(4, 3, 100, 5000, WAAR)=ASELECT.MATRIX(4; 3; 100; 5000; WAAR)47304730310310
325-04135000500028752875100100
425-04147807803420342034203420
525-04154105410550005000260260
6
Formulecel (B2)InvoerOverloopresultaat

Formule in B2

=ASELECT.MATRIX(4, 3, 100, 5000, WAAR)
=ASELECT.MATRIX(4; 3; 100; 5000; WAAR)

Resultaat: 1250 | 4730 | 310 / 5000 | 2875 | 100 / 780 | 3420 | 3420 / 4105 | 5000 | 2601250 | 4730 | 310 / 5000 | 2875 | 100 / 780 | 3420 | 3420 / 4105 | 5000 | 260Willekeurig: jouw uitkomst wijkt af

Stap voor stap
  1. rijen is 4 en kolommen is 3, dus het blok is 4 bij 3: één rij per boekstuk, één kolom per regel, B2 tot D5.
  2. min is 100, max is 5000, en geheel_getal is WAAR, dus elk van de 12 cellen krijgt een heel getal van 100 tot en met 5000: 5000 - 100 + 1 = 4901 mogelijke waarden per cel.
  3. Stel dat Excel 1250, 4730, 310 trekt voor boekstuk 25-0412; 5000, 2875, 100 voor 25-0413; 780, 3420, 3420 voor 25-0414; 4105, 5000, 260 voor 25-0415. Beide grenzen komen voor (100 één keer, 5000 twee keer), en 25-0414 heeft twee keer 3420, omdat elke cel los wordt getrokken.
  4. Laat het vijfde argument weg en hetzelfde blok vult zich met decimalen zoals 2718,4392 en 100,0427, omdat geheel_getal standaard ONWAAR is. Een precies bedrag van 5,0005.000 wordt dan praktisch onmogelijk, dus de test op ronde bedragen wordt nooit getest.
  5. Druk op F9 en alle 12 bedragen veranderen. Als het testblad werkt, selecteer je B2:D5 en plak je als waarden voordat je ze vervangt door echte journaalregels.

Let op: Typ je een echt bedrag in C3 terwijl de formule nog actief is, dan krijg je #OVERLOPEN! in B2, omdat de getypte waarde het overloopbereik blokkeert. Zet het blok eerst vast.

Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant

Waarom het werkt

De eerste twee argumenten geven het blok de vorm van het blad, en de laatste drie bepalen wat er in elke cel komt. geheel_getal op WAAR maakt van de grenzen hele waarden die zelf ook mogen voorkomen, en dat zijn de euro's in een export; zonder dat beschrijven dezelfde grenzen een doorlopend bereik van decimalen.

Meer om op te letten

  • Verwissel je min en max, ASELECT.MATRIX(4; 3; 5000; 100; WAAR), dan krijg je #WAARDE!; min mag niet groter zijn dan max.

Varianten

=AFRONDEN(ASELECT.MATRIX(4, 3, 100, 5000), 2)
=AFRONDEN(ASELECT.MATRIX(4; 3; 100; 5000); 2)

Bedragen met centen tussen 100 en 5,0005.000, dichter bij een echte export: AFRONDEN op 2 decimalen houdt ze op centenniveau.

Gevorderd

Facturen schudden tot een willekeurige testvolgorde

Sanne de Vries heeft zes verkoopfacturen van Veldhuis Installatie BV die ze gaat natrekken aan onderliggende stukken, en ze wil een willekeurige testvolgorde waarvan niemand kan zeggen dat die selectief is. De lijst kan nog groeien. Ze wil de geschudde factuurnummers in één kolom naast de lijst, en zet de volgorde vast zodra die in het dossier is vastgelegd.

Fragment van het werkblad: in D2 staat de formule
RijABCDE
1FactuurnummerBedragTestvolgorde
225-1101€8,450.00€ 8.450,0025-1105=SORTEREN.OP(A2:A7, ASELECT.MATRIX(RIJEN(A2:A7)))=SORTEREN.OP(A2:A7; ASELECT.MATRIX(RIJEN(A2:A7)))
325-1102€1,275.50€ 1.275,5025-1102
425-1103€23,900.00€ 23.900,0025-1104
525-1104€640.75€ 640,7525-1106
625-1105€5,180.00€ 5.180,0025-1101
725-1106€11,320.40€ 11.320,4025-1103
8
Formulecel (D2)InvoerOverloopresultaat

Formule in D2

=SORTEREN.OP(A2:A7, ASELECT.MATRIX(RIJEN(A2:A7)))
=SORTEREN.OP(A2:A7; ASELECT.MATRIX(RIJEN(A2:A7)))

Resultaat: 25-1105 / 25-1102 / 25-1104 / 25-1106 / 25-1101 / 25-110325-1105 / 25-1102 / 25-1104 / 25-1106 / 25-1101 / 25-1103Willekeurig: jouw uitkomst wijkt af

Stap voor stap
  1. Eerst de binnenste functie: RIJEN(A2:A7) telt de rijen van de lijst: 6.
  2. ASELECT.MATRIX(6) trekt 6 decimale getallen tussen 0 en 1, één per factuur. Stel 0,6213 voor 25-1101, 0,1534 voor 25-1102, 0,8846 voor 25-1103, 0,3419 voor 25-1104, 0,0702 voor 25-1105 en 0,5127 voor 25-1106; bij jou zijn ze anders.
  3. SORTEREN.OP gebruikt die 6 getallen als sorteersleutel en sorteert oplopend: 0,0702, 0,1534, 0,3419, 0,5127, 0,6213, 0,8846.
  4. Elke factuur volgt zijn getal: 25-1105, 25-1102, 25-1104, 25-1106, 25-1101, 25-1103. Ze lopen over van D2 tot D7; de willekeurige sleutels zelf verschijnen nergens op het blad.
  5. Wat de trekking ook is, de uitvoer bevat altijd dezelfde zes factuurnummers, elk precies één keer, omdat sorteren alleen de volgorde verandert. Leg de volgorde vast, kopieer dan D2:D7 en plak als waarden, anders schudt de volgende bewerking alles opnieuw.

Let op: Gebruik je hele getallen als sleutel, ASELECT.MATRIX(6; 1; 1; 6; WAAR), dan lijkt dat hetzelfde, maar het levert in ongeveer 98% van de trekkingen gelijke waarden op. Facturen met een gelijke sleutel houden hun volgorde uit de lijst, dus wat bovenaan de lijst staat wordt stilletjes bevoordeeld.

Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 2 varianten

Waarom het werkt

Elk item een onafhankelijke willekeurige sleutel geven en daarop sorteren maakt elke volgorde even waarschijnlijk, en dat is wat een eerlijke schudding betekent. RIJEN koppelt het aantal sleutels aan de lijst, dus de sleutelmatrix heeft altijd de grootte die SORTEREN.OP eist.

Meer om op te letten

  • Typ je ASELECT.MATRIX(6) vast in, dan werkt dat tot er een zevende factuur bijkomt en de bereiken worden uitgebreid: dan is de sleutelmatrix er één te kort en is het resultaat #WAARDE!.

Varianten

=NEMEN(SORTEREN.OP(A2:A7, ASELECT.MATRIX(RIJEN(A2:A7))), 3)
=NEMEN(SORTEREN.OP(A2:A7; ASELECT.MATRIX(RIJEN(A2:A7))); 3)

Alleen de eerste drie van de schudding: een willekeurige steekproef van 3 facturen om als eerste na te trekken, nooit twee keer dezelfde factuur.

=SORTEREN.OP(A2:B7, ASELECT.MATRIX(RIJEN(A2:B7)))
=SORTEREN.OP(A2:B7; ASELECT.MATRIX(RIJEN(A2:B7)))

Schud factuurnummers en bedragen samen, zodat elke factuur zijn bedrag houdt.

ExpertExcel 2024 of nieuwer (Dit voorbeeld vereist Excel 2024 of nieuwer)

Een steekproef van handmatige boekingen trekken zonder herhaling

In december 2025 heeft Veldhuis Installatie BV 45 handmatige memoriaalboekingen (dagboek MEM) geboekt, genummerd 1 tot en met 45 in het uittreksel. Sanne de Vries test er zes van, één per testaccent, en geen boeking mag twee keer worden gekozen, dus de zes nummers moeten allemaal verschillen. Het aantal trekkingen moet de lijst met steekproefitems volgen, en de formule moet duidelijk melden als iemand meer items toevoegt dan er boekingen zijn.

Fragment van het werkblad: in C2 staat de formule
RijABCDEFG
1ItemTestaccentTe testen boekingEerste boeking11
211Rond bedrag2727=LET( populatie, REEKS(F2 - F1 + 1, 1, F1), steekgrootte, RIJEN(B2:B7), geschud, SORTEREN.OP(populatie, ASELECT.MATRIX(RIJEN(populatie))), ALS(steekgrootte > RIJEN(populatie), "Meer items dan boekingen", NEMEN(geschud, steekgrootte)) )=LET( populatie; REEKS(F2 - F1 + 1; 1; F1); steekgrootte; RIJEN(B2:B7); geschud; SORTEREN.OP(populatie; ASELECT.MATRIX(RIJEN(populatie))); ALS(steekgrootte > RIJEN(populatie); "Meer items dan boekingen"; NEMEN(geschud; steekgrootte)) )Laatste boeking4545
322Boeking in het weekend33
433Geboekt na afsluiting periode4444
544Ongebruikelijke rekeningcombinatie1111
655Afgrenzing aan het jaareinde3838
766Geen omschrijving1919
8
Formulecel (C2)InvoerOverloopresultaat

Formule in C2

=LET(
  populatie, REEKS(F2 - F1 + 1, 1, F1),
  steekgrootte, RIJEN(B2:B7),
  geschud, SORTEREN.OP(populatie, ASELECT.MATRIX(RIJEN(populatie))),
  ALS(steekgrootte > RIJEN(populatie), "Meer items dan boekingen", NEMEN(geschud, steekgrootte))
)
=LET(
  populatie; REEKS(F2 - F1 + 1; 1; F1);
  steekgrootte; RIJEN(B2:B7);
  geschud; SORTEREN.OP(populatie; ASELECT.MATRIX(RIJEN(populatie)));
  ALS(steekgrootte > RIJEN(populatie); "Meer items dan boekingen"; NEMEN(geschud; steekgrootte))
)

Resultaat: 27 / 3 / 44 / 11 / 38 / 1927 / 3 / 44 / 11 / 38 / 19Willekeurig: jouw uitkomst wijkt af

Stap voor stap
  1. populatie is REEKS(45 - 1 + 1; 1; 1): een kolom met de 45 boekingnummers 1, 2, 3 enzovoort tot en met 45. Elk nummer bestaat één keer.
  2. steekgrootte is RIJEN(B2:B7): 6 steekproefitems, dus 6 trekkingen. Voeg een item toe in rij 8, breid het bereik uit, en steekgrootte wordt 7 zonder dat je de rest aanraakt.
  3. geschud sorteert populatie op ASELECT.MATRIX(45), 45 willekeurige decimale getallen: één willekeurige sleutel per boeking. Het resultaat is alle 45 nummers in willekeurige volgorde, nog steeds elk precies één keer.
  4. ALS controleert 6 > 45, en dat is ONWAAR, dus NEMEN(geschud; 6) houdt de eerste zes van de schudding. Stel dat het om 27, 3, 44, 11, 38 en 19 gaat; jouw trekking is anders, maar het zijn altijd 6 verschillende hele getallen van 1 tot en met 45.
  5. De zes nummers lopen over van C2 tot C7, één naast elk testaccent in volgorde van trekking: boeking 27 wordt getest op een rond bedrag, boeking 19 op een ontbrekende omschrijving.
  6. Zet F2 op 5 en de populatie bevat maar 5 boekingen; steekgrootte is 6, dus ALS geeft Meer items dan boekingen in plaats van een trekking die het laatste testaccent stilletjes zonder boeking zou laten. Kopieer na de trekking C2:C7 en plak als waarden: er is geen startwaarde, dus deze trekking is nooit meer na te maken.

Let op: De omgekeerde fout is ASELECT.MATRIX(6; 1; 1; 45; WAAR). Het ziet er goed uit, zes hele getallen van 1 tot en met 45, maar elke cel wordt los getrokken, en ongeveer 29% van de trekkingen bevat een herhaald nummer: één boeking wordt twee keer getest voor twee accenten, en een andere wordt nooit getest.

Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 1 variant

Waarom het werkt

ASELECT.MATRIX levert de gekozen boekingnummers nooit zelf, alleen de volgorde. De nummers komen uit REEKS, die elke boeking één keer opsomt, dus de eerste n van een schudding nemen is een trekking zonder teruglegging, en herhalingen zijn door de opbouw onmogelijk.

Gebruik deze opbouw niet als de selectie reproduceerbaar moet zijn voor een beoordelaar, want ASELECT.MATRIX heeft geen startwaarde. Het alternatief is een hulpkolom met willekeurige sleutels die één keer wordt gemaakt en als waarden wordt vastgezet naast de boekingenlijst, waarna je op die kolom sorteert; dat kost een kolom extra, maar laat bewijs achter van hoe de steekproef precies is gekozen.

Meer om op te letten

  • Een live trekking herberekent zodra iemand typt, dus een latere bewerking verandert de selectie nadat je die in het werkdocument hebt vastgelegd. Zet de berekening voor de trekking op handmatig, druk één keer op F9 en zet vast.
  • Bij een populatie van honderdduizenden journaalregels bouwen en sorteren REEKS en ASELECT.MATRIX bij elke herberekening evenveel waarden. Schud dan één keer naar een vastgezette kolom, of trek een paar nummers en controleer op herhaling.

Varianten

=SORTEREN(NEMEN(SORTEREN.OP(REEKS(45), ASELECT.MATRIX(45)), 6))
=SORTEREN(NEMEN(SORTEREN.OP(REEKS(45); ASELECT.MATRIX(45)); 6))

De kale trekking, zonder LET en zonder controle, gesorteerd van laag naar hoog zodat je het uittreksel op volgorde kunt doorwerken. Korter, maar 45 en 6 zijn ingetypt en volgen het blad niet.

Veelgemaakte fouten

Veelgemaakte fouten
SymptoomOorzaakOplossing
Hetzelfde getal komt twee keer voorASELECT.MATRIX(6; 1; 1; 45; WAAR) wordt gebruikt om 6 verschillende lotnummers te trekken, en soms komt een nummer twee keer voor.Elke cel is een losse trekking. Voor verschillende nummers schud je het hele bereik met SORTEREN.OP(REEKS(45); ASELECT.MATRIX(45)) en neem je de eerste 6, zoals in het voorbeeld op niveau Expert.
De getallen van gisteren zijn nu andersDe willekeurige getallen die je gisteren hebt geanalyseerd zijn vandaag anders, en je aantekeningen kloppen niet meer met het blad.Het openen van het bestand heeft ze herberekend. Zodra een trekking definitief is, kopieer je het overloopbereik en plak je het als waarden.
Decimalen als 6,2817 in plaats van hele getallenASELECT.MATRIX(4; 3; 1; 10) moet cijfers van 1 tot en met 10 geven en toont waarden als 6,2817.geheel_getal staat standaard op ONWAAR, dus je krijgt decimalen. Voeg WAAR toe als vijfde argument.
Werkmap traag bij elke wijzigingEen model met ASELECT.MATRIX(100000; 10) is bij elke bewerking traag geworden.Een miljoen vluchtige cellen worden bij elke wijziging opnieuw getrokken, met alles wat ervan afhangt. Zet het blok vast als waarden zodra het zijn werk heeft gedaan, of zet de berekening op handmatig terwijl je werkt.

Gebruikt in combinaties