Een benoemd bereik dynamisch maken mbv VERSCHUIVING
October 22nd, 2007
Een benoemd bereik in Excel is een adres (bijvoorbeeld B3:B6) dat je een naam hebt gegeven. Het voordeel hiervan is dat je in formules in plaats van het adres de naam kunt intypen. Ook kun je het adres dat bij de naam hoort veranderen. Excel zorgt er dan voor dat in alle formules waar je de naam gebruikt, het adres wordt aangepast.
In eerdere artikelen (Een dynamische vervolgkeuzelijst mbv validatie en Invoer valideren met behulp van een vervolgkeuzelijst) heb ik voor het vullen van vervolgkeuzelijsten gebruik gemaakt van een benoemd bereik. Echter in deze voorbeelden was het bereik statisch. Als ik een nieuw element aan de lijst toevoeg komt deze niet automatisch in de vervolgkeuzelijst te staan. Om dat te bereiken hebben we een dynamisch benoemd bereik nodig.

In het bovenstaande voorbeeld heb ik het bereik B3:B6 de naam ‘Grootboekrekening’ gegeven. In cel D3 heb ik een validatie gemaakt die refereert naar dit bereik. Het zou nu mooi zijn als ik een nieuwe grootboekrekening toevoeg, deze ook automatisch is te zien in de vervolgkeuzelijst.
Laten we eerst eens kijken naar de definitie van het bereik Grootboekrekening. Dit kan door in het menu ‘Invoegen -> Naam -> DefiniĆ«ren’ te kiezen.

Grootboekrekening verwijst nu naar de cellen B3:B6 op Blad2. Gelukkig staat Excel het ons toe om in het invoervak onder ‘Verwijst naar: ‘ in plaats van een celadres een formule in te voeren. Om het benoemde bereik ‘Grootboekrekening’ dynamisch te maken heb ik de volgende formulie ingevoerd:
=VERSCHUIVING(Blad2!$B$2;1;0;AANTALARG(Blad2!$B:$B)-1;1)

Door achtereenvolgens op [Toevoegen] en [OK] te klikken kom je weer terug in het werkblad. Als ik het lijstje met grootboekrekeningen uitbreid met rekening 9500 ‘Bijzondere Baten’, dan staat dit automatisch ook in de vervolgkeuzelijst.

In de formule maak ik gebruik van twee functies: VERSCHUIVING (Engels: OFFSET) en AANTALARG (Engels: COUNTA). VERSCHUIVING kent de volgende structuur: VERSCHUIVING(verw; rijen; kolommen; [hoogte]; [breedte]). Verw kun je zien als een anker. In het voorbeeld is dit cel B2. Vanaf dit punt kunnen we gaan schuiven. De omschrijving ‘Grootboekrekening’ hoeft niet in de vervolgkeuzelijst te komen. Daarom schuiven we 1 rij omlaag. De rest van de lijst staat wel in kolom B dus we schuiven 0 kolommen naar rechts. We zijn dan in cel B3. Vervolgens kunnen we de hoogte en breedte instellen. De breedte is duidelijk, 1 kolom. De hoogte is afhankelijk van het aantal elementen in de lijst. Daar hebben we de functie AANTALARG voor nodig.
De structuur van AANTALARG is (waarde1; [waarde2];…). In het voorbeeld heb ik de hele kolom B opgegeven. AANTALARG telt dan het aantal niet lege cellen in deze kolom. Van dit getal trek ik 1 af omdat cel B2 niet meegetelt hoeft te worden.
Vrij vertaal betekent de formule:
=VERSCHUIVING(Blad2!$B$2;1;0;AANTALARG(Blad2!$B:$B)-1;1)
Begin in cel B2. Ga 1 rij naar beneden en 0 kolommen naar rechts. Het bereik is vervolgens zo hoog als het aantal niet lege cellen in kolom B - 1 en de breedte is 1. Dit bereik komt precies overeen met de waarden voor de vervolgkeuzelijst.
In dit artikel heb ik een dynamisch benoemd bereik gebruikt voor een vervolgkeuzelijst. Dezelfde techniek kan ook heel goed worden toegepast op de zoek-matrix in een VERT.ZOEKEN functie, op de brongegevens voor een grafiek, of op de tabel die de basis is voor een draaitabel.
Mocht je het voorbeeld willen bekijken dan kun je het Excelbestand hier downloaden. Heb je nog een vraag of opmerking over dit artikel, voel je dan vrij om hieronder een comment achter te laten.
October 24th, 2007 at 5:32 am
[…] als in het vorige artikel kunnen we dit oplossen met VERSCHUIVING (Engels: OFFSET). De functie VERSCHUIVING kent de […]
October 29th, 2007 at 5:25 am
[…] als ik een extra regel toevoeg. Hoe je dit kunt doen heb ik al eerder beschreven in het artikel: Een benoemd bereik dynamisch maken mbv VERSCHUIVING. In dit voorbeeld heb ik de volgende namen met bijbehorende formules […]
November 9th, 2007 at 12:18 pm
[…] behulp van de functies VERSCHUIVING (Engels: OFFSET) en VERGELIJKEN (Engels: MATCH). Het artikel Een benoemd bereik dynamisch maken mbv VERSCHUIVING geeft meer informatie over VERSCHUIVEN, Index en vergelijken als alternatief voor verticaal zoeken […]
September 10th, 2008 at 7:28 am
ik heb een vraagje.
a b c d e f->(dit is c*d*e )
rij1 rij2 rij3 rij4 rij5 rij6
1 1 3 2 4 24->( 3*2*4)
1 2 6 4 3 72
2 1 7 5 5 175
2 2 8 6 6 276
3 “1″ 8 7 7 392
3 2 7 5 5 175
( bijv A16 ) in dit voorbeeld is dat (3)
(formule)-> moet een getal uit rij 2 komen.
wat ik wil is dus een formule die ervoor zorgt dat er een getal uit rij 2 komt te staan.
Dit getal moet in de horizontale lijn staan van het maximum dat bij rij f uitkomt,
alleen dat kan alleen als het getal uit die lijn uit rij 1 gelijk is met het getal uit a16
dus bijvoorbeeld. Als in A17 3 staat. Dan zou er het getal 1 uitkomen.
May 22nd, 2009 at 7:32 am
Indrukwekkende uitleg, erg fraai.
Als Excel ‘Noobie’ de volgende vraag;
Als ik een hele kolom tot lijst verhef mag ik dan ook spreken van een dynamische lijst.
Immers alle later ingevoerde cellen zullen deel uit maken van de lijst.
Leuk ook die ‘pull-down’menu’s, is daar ook de lettergrootte van te wijzigen en is het mogelijk door de waarden heen te scrollen ?
Vriendelijke groet,
Check Master