Inhoudsopgave
In deze zelfstudie leert u hoe u een dynamisch naambereik in Excel kunt maken en hoe u dit in formules kunt gebruiken om nieuwe gegevens automatisch in berekeningen op te nemen.
In de tutorial van vorige week hebben we gekeken naar verschillende manieren om een statisch naambereik in Excel te definiëren. Een statische naam verwijst altijd naar dezelfde cellen, wat betekent dat u de verwijzing naar het bereik handmatig moet bijwerken telkens wanneer u nieuwe gegevens toevoegt of bestaande gegevens verwijdert.
Als u werkt met een voortdurend veranderende gegevensverzameling, wilt u misschien uw naambereik dynamisch maken, zodat het automatisch wordt uitgebreid om nieuwe gegevens toe te voegen of wordt ingekrompen om verwijderde gegevens uit te sluiten. Verderop in deze zelfstudiegids vindt u gedetailleerde stapsgewijze richtlijnen over hoe u dit kunt doen.
Een dynamisch naambereik maken in Excel
Laten we om te beginnen een dynamisch naambereik maken dat bestaat uit een enkele kolom en een variabel aantal rijen. Voer daarvoor de volgende stappen uit:
- Op de Formule tabblad, in de Gedefinieerde namen groep, klik Naam definiëren Of druk op Ctrl + F3 om de Excel Name Manger te openen en klik op de knop Nieuw... knop.
- Hoe dan ook, de Nieuwe naam dialoogvenster geopend, waarin u de volgende details opgeeft:
- In de Naam vak, type de naam voor uw dynamisch bereik.
- In de Toepassingsgebied dropdown, stel het bereik van de naam in. Werkboek (standaard) wordt in de meeste gevallen aanbevolen.
- In de Verwijst naar vak, voert u de formule OFFSET COUNTA of INDEX COUNTA in.
- Klik op OK. Klaar!
In de volgende schermafbeelding definiëren we een dynamisch bereik met de naam items die alle cellen met gegevens in kolom A, behalve de kopregel:
OFFSET-formule om een Excel dynamisch naambereik te definiëren
De algemene formule voor het maken van een dynamisch naambereik in Excel is als volgt:
OFFSET( eerste_cel , 0, 0, COUNTA( kolom ), 1)Waar:
- eerste_cel - het eerste item dat moet worden opgenomen in het genoemde bereik, bijvoorbeeld $A$2.
- kolom - een absolute verwijzing naar de kolom zoals $A:$A.
In de kern van deze formule gebruikt u de functie COUNTA om het aantal niet-blanco cellen in de kolom van belang te krijgen. Dat aantal gaat rechtstreeks naar de hoogte argument van de functie OFFSET(referentie, rijen, kolommen, [hoogte], [breedte]) om aan te geven hoeveel rijen moeten worden teruggegeven.
Verder is het een gewone Offset-formule, waarbij:
- referentie is het beginpunt waarop u de offset baseert (eerste_cel).
- rijen en cols zijn beide 0, omdat er geen kolommen of rijen te compenseren zijn.
- breedte is gelijk aan 1 kolom.
Om bijvoorbeeld een dynamisch naambereik te maken voor kolom A in blad 3, beginnend in cel A2, gebruiken we deze formule:
=OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)
Opmerking. Als u een dynamisch bereik definieert in het huidige werkblad, hoeft u de bladnaam niet op te nemen in de verwijzingen; Excel doet dit automatisch voor u. Als u een bereik opbouwt voor een ander blad, zet u de cel- of bereikverwijzing voorafgegaan door de bladnaam gevolgd door het uitroepteken (zoals in het bovenstaande formulevoorbeeld).
INDEX-formule om een dynamisch naambereik te maken in Excel
Een andere manier om een dynamisch bereik in Excel te maken is het gebruik van COUNTA in combinatie met de INDEX-functie.
eerste_cel INDEX( kolom COUNTA( kolom ))Deze formule bestaat uit twee delen:
- Aan de linkerkant van de bereikoperator (:) zet je de hardgecodeerde startreferentie zoals $A$2.
- Aan de rechterkant gebruikt u de functie INDEX(array, row_num, [column_num]) om de eindverwijzing te achterhalen. Hier levert u de hele kolom A voor de array en gebruikt u COUNTA om het rijnummer te krijgen (d.w.z. het aantal niet-ingevulde cellen in kolom A).
Voor onze voorbeelddataset (zie de schermafbeelding hierboven) gaat de formule als volgt:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
Aangezien er 5 niet-blanco cellen zijn in kolom A, inclusief een kolomkop, geeft COUNTA 5. Bijgevolg geeft INDEX $A$5 terug, de laatst gebruikte cel in kolom A (gewoonlijk geeft een Index-formule een waarde terug, maar de referentie-operator dwingt haar een verwijzing terug te geven). En omdat we $A$2 als uitgangspunt hebben genomen, is het eindresultaat van de formule het bereik $A$2:$A$5.
Om het nieuw gecreëerde dynamische bereik te testen, kunt u COUNTA het aantal items laten ophalen:
=COUNTA(Items)
Als het goed is, verandert het resultaat van de formule zodra u items toevoegt aan of verwijdert uit de lijst:
Opmerking. De twee hierboven besproken formules geven hetzelfde resultaat, maar er is een verschil in prestatie waar u rekening mee moet houden. OFFSET is een vluchtige functie die bij elke wijziging in een blad opnieuw wordt berekend. Op krachtige moderne machines en redelijk grote gegevenssets zou dit geen probleem moeten zijn. Op machines met weinig capaciteit en grote gegevenssets kan dit uw Excel vertragen. In dat geval zou ubeter de INDEX-formule gebruiken om een dynamisch naambereik te maken.
Hoe maak je een tweedimensionaal dynamisch bereik in Excel?
Om een tweedimensionaal benoemd bereik te maken, waarbij niet alleen het aantal rijen maar ook het aantal kolommen dynamisch is, gebruikt u de volgende wijziging van de formule INDEX COUNTA:
eerste_cel :INDEX($1:$1048576, COUNTA( eerste_kolom ), COUNTA( eerste_rij )))In deze formule hebt u twee COUNTA-functies om de laatste niet-lege rij en de laatste niet-lege kolom te krijgen ( rij_nummer en kolom_nummer respectievelijk de argumenten van de INDEX-functie). In de array argument voert u het hele werkblad in (1048576 rijen in Excel 2016 - 2007; 65535 rijen in Excel 2003 en lager).
En nu definiëren we nog een dynamisch bereik voor onze gegevensverzameling: het bereik met de naam verkoop dat verkoopcijfers voor 3 maanden (jan tot mrt) bevat en automatisch wordt aangepast als u nieuwe artikelen (rijen) of maanden (kolommen) aan de tabel toevoegt.
Met de verkoopgegevens die beginnen in kolom B, rij 2, krijgt de formule de volgende vorm:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))
Om er zeker van te zijn dat uw dynamisch bereik werkt zoals het hoort, voert u de volgende formules ergens op het blad in:
=SUM(sales)
=SUM(B2:D5)
Zoals u in het onderstaande screenshot kunt zien, leveren beide formules hetzelfde totaal op. Het verschil openbaart zich op het moment dat u nieuwe items aan de tabel toevoegt: de eerste formule (met het dynamische naambereik) wordt automatisch bijgewerkt, terwijl de tweede bij elke wijziging handmatig moet worden bijgewerkt. Dat maakt een enorm verschil, hè?
Hoe dynamische naambereiken gebruiken in Excel-formules
In de vorige delen van deze tutorial hebt u al een paar eenvoudige formules gezien die gebruik maken van dynamische bereiken. Laten we nu proberen iets zinvollers te bedenken dat de werkelijke waarde van een dynamisch genoemd bereik in Excel laat zien.
Voor dit voorbeeld nemen we de klassieke INDEX MATCH formule waarmee Vlookup in Excel wordt uitgevoerd:
INDEX ( return_range , MATCH ( lookup_waarde , lookup_range , 0))...en zien hoe we de formule nog krachtiger kunnen maken met het gebruik van dynamische naambereiken.
Zoals in de bovenstaande schermafbeelding te zien is, proberen we een dashboard te bouwen, waarbij de gebruiker een artikelnaam invoert in H1 en de totale verkoop voor dat artikel krijgt in H2. Onze voorbeeldtabel die we voor demonstratiedoeleinden hebben gemaakt, bevat slechts 4 artikelen, maar in uw werkelijke sheets kunnen er honderden en zelfs duizenden rijen zijn. Bovendien kunnen er dagelijks nieuwe artikelen worden toegevoegd, dus het gebruik van referenties is geenoptie, omdat je dan de formule steeds opnieuw moet bijwerken. Daar ben ik te lui voor! :)
Om de formule te dwingen automatisch uit te breiden, gaan we 3 namen definiëren: 2 dynamische bereiken, en 1 statische cel met naam:
Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))
Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))
Lookup_value: =$H$1
Opmerking: Excel voegt de naam van het huidige blad toe aan alle verwijzingen, dus voordat u de namen maakt, moet u het blad met uw brongegevens openen.
Begin nu de formule te typen in H1. Typ bij het eerste argument een paar tekens van de naam die u wilt gebruiken, en Excel toont alle beschikbare overeenkomende namen. Dubbelklik op de juiste naam, en Excel voegt deze meteen in de formule in:
De ingevulde formule ziet er als volgt uit:
=INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))
En werkt perfect!
Zodra u nieuwe records aan de tabel toevoegt, worden deze meteen in uw berekeningen opgenomen, zonder dat u ook maar één wijziging in de formule hoeft aan te brengen! En als u de formule ooit moet overzetten naar een ander Excel-bestand, maakt u gewoon dezelfde namen aan in de bestemmingswerkmap, kopieert/plakt u de formule, en werkt deze onmiddellijk.
Tip. Behalve dat ze formules duurzamer maken, zijn dynamische bereiken handig voor het maken van dynamische vervolgkeuzelijsten.
Dit is hoe u dynamische naambereiken maakt en gebruikt in Excel. Om de formules die in deze tutorial worden besproken nader te bekijken, kunt u onze voorbeeldwerkmap Excel Dynamisch Naambereik downloaden. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!