Bereiknamen in Excel

Inhoud

Inleiding

Bereiknamen zijn een belangrijke functionaliteit die Excel biedt. Daarom een uitgebreide beschrijving in dit artikel!

In Excel is het mogelijk een bereik van cellen een naam te geven. Wordt dat gedaan, dan kan voortaan deze naam gebruikt worden om naar dat bereik te verwijzen, in plaats van het adres. Over het algemeen is een naam van een bereik makkelijker te onthouden dan het adres van de begin- en eindcel van een bereik.

Het gebruik van namen heeft een aantal voordelen: bereiken zijn eenvoudiger terug te vinden, formules zijn makkelijker te begrijpen, enzovoorts.

Verder zijn er zaken in Excel die alleen mogelijk zijn door een bereik eerst een naam te geven. Maar er kan veel meer met namen in Excel. Er kunnen ook formules in gebruikt worden en dat opent een wereld van mogelijkheden.

Sterker nog, omdat tevens de oude Excel 4 macro functies in een gedefinieerde naam mogen worden toegepast zijn dingen mogelijk die normaal gesproken alleen via een VBA macro kunnen worden gerealiseerd.

Hoe kunnen namen worden gedefinieerd

Er zijn verschillende methoden om een naam aan een bereik te geven.

De eerste gebruikt het naamvak links van de formule balk (zie Afbeelding 1). Het bereik kan een naam worden gegeven door de gewenste cel of cellen te selecteren, in het naamvak te klikken en de gewenste naam in te tikken.

 Vervolgens moet op enter worden gedrukt om de naam te laten accepteren door Excel. Het is ook mogelijk het bereik waarnaar een naam verwijst te laten selecteren, door de naam te kiezen uit de lijst die in het naamvak verschijnt wanneer op het pijltje ernaast wordt geklikt.

Naamvak met naam erin
Afbeelding 1: Naamvak met naam erin

Een snelle methode kan worden gevolgd wanneer de gewenste naam van een cel of bereik van cellen al in een of meer cellen naast het bereik staat. Bijvoorbeeld zoals in Afbeelding 2.

Bereik cellen met namen
Afbeelding 2: bereik cellen met namen

Het bereik met de namen en de cellen waarnaar de namen moeten verwijzen moet worden geselecteerd. Vervolgens moet in het menu gekozen worden:

Tab Formules, knop Maken o.b.v. selectie

Het venster uit Afbeelding 3 verschijnt. Door in dit voorbeeld de opties aan te vinken zoals in Afbeelding 3 is gedaan, worden in één klap zeven namen gedefinieerd:

dialoogvenster Naam maken
Afbeelding 3: dialoogvenster Naam maken

Naam

Verwijst naar

Ofwel

Appels

=Blad1!$B$2:$B$4

De drie cellen onder Appels

Peren

=Blad1!$C$2:$C$4

De drie cellen onder Peren

Bananen

=Blad1!$D$2:$D$4

De drie cellen onder Bananen

Europa

=Blad1!$B$2:$D$2

De drie cellen rechts van Europa

Azie

=Blad1!$B$3:$D$3

De drie cellen rechts van Azie

Amerika

=Blad1!$B$4:$D$4

De drie cellen rechts van Amerika

Omzet

=Blad1!$B$2:$D$4

Alle cellen met cijfers

De derde methode om een naam te definiëren is door op de tab Formules op Naam definiëren te klikken, zie Afbeelding 4. Deze methode zal verderop in dit artikel worden toegepast.

 dialoogvenster naam definiëren
Afbeelding 4: dialoogvenster naam definiëren

Hoe kunnen gedefinieerde namen worden gebruikt

Met de tabel van Afbeelding 3 kan getoond worden wat er met namen mogelijk is. Wanneer de som van verkochte appels berekend moet worden, zou daarvoor normaal gesproken de formule =SOM(B2:B4) gebruikt worden. Na het definiëren van namen kan echter volstaan worden met =SOM(Appels). Het moge duidelijk zijn, dat deze laatste formule veel eenvoudiger te begrijpen is.

Een formule met naam
Afbeelding 5, formule met naam

Een interessant feit is verder, dat een naam altijd een matrix is (in de Excel beleving). Als een gelijk aantal cellen wordt geselecteerd als het aantal waarnaar de naam verwijst, dan kan dit worden getoond. De formule =Appels geeft in Excel (vanaf 2021 en 365) de drie waarden voor Appels onder elkaar:

Een naam is een matrix
Afbeelding 5a: Een naam is een matrix

Er kunnen ook andere dingen met namen gedaan worden. Zo geeft deze formule de omzet aan appels in Europa (1000):

=Appels Europa

Door de twee namen te scheiden met een spatie wordt hier aangegeven dat het snijpunt van beide namen gebruikt moet worden. Dit snijpunt kan overigens meerdere rijen en kolommen beslaan.

In feite kunnen namen worden toegepast op alle plaatsen in Excel waar een cel of een bereik van cellen moet worden opgegeven.

Één speciaal voorbeeld is het valideren van data met de "lijst" optie (Zie afbeelding 6). Zonder in te gaan op deze krachtige functie in Excel wordt even getoond, dat het hiermee mogelijk wordt een lijst op te geven die zich niet op hetzelfde blad bevind als het celbereik waarvoor de validatie wordt ingesteld. Normaal gesproken is dit niet mogelijk:

Gegevens, Gegevens validatie, lijst optie
Afbeelding 6:Data, valideren, lijst optie

  • Selecteer Blad2 van een bestand;

  • Kies Gegevens >> Valideren uit het menu van Excel;

  • Kies de optie "Lijst" bij "Toestaan";

  • Probeer nu als bronbereik =Blad1!B2:B4 op te geven;

  • Er verschijnt een foutmelding, zie afbeelding 6.

Om nu toch een bereik van een ander werkblad te kunnen toepassen kan gebruik gemaakt worden van de naam die eerder aan dit bereik gegeven is: "Appels".

Vul deze formule in in het invoervak "Bron":

=Appels

De validatie zal nu wel worden geaccepteerd.

Absolute en relatieve adressering

Bij het definiëren van namen wordt standaard gebruik gemaakt van absolute celverwijzingen in de vorm Blad1!$A$1. De dollartekens geven hierbij aan, dat dit adres absoluut moet worden geïnterpreteerd: onafhankelijk van de cel waar de naam in wordt gebruikt, wordt steeds hetzelfde adres gebruikt.

Het is echter ook mogelijk om relatieve verwijzingen te gebruiken. Dit biedt interessante mogelijkheden.

Als bijvoorbeeld cel C3 op blad 2 is geselecteerd en de naam wordt gedefinieerd als =Blad2!A1 (via Formules, Naam definiëren, zie Afbeelding 7), dan zal de naam verwijzen naar een cel twee kolommen naar links en twee naar boven ten opzichte van de cel waarin de naam is gebruikt.

Definiëren relatieve naam
Afbeelding 7, definiëren relatieve naam

De formule =Relatief in cel C14 op blad 2 verwijst dus naar cel A12 (zie Afbeelding 8).

voorbeeld relatieve verwijzing
Afbeelding 8: voorbeeld relatieve verwijzing

De context van namen

Wanneer een naam wordt gedefinieerd volgens de eerder in dit artikel beschreven methoden, dan is een naam altijd zichtbaar in de gehele werkmap.

Dit wordt in het algemeen als een globale naam aangeduid. Namen kunnen echter ook lokaal zijn ten opzichte van een bepaald werkblad. Door tijdens de definitie uit de "bereik" keuzelijst het werkblad te kiezen, wordt de naam lokaal gemaakt naar het desbetreffende blad.

definitie van een lokale naam
Afbeelding 9: definitie van een lokale naam

Lokale namen zijn in het venster Namen Beheren herkenbaar door de naam van het werkblad in de kolom "bereik":(zie Afbeelding 10).

lokale naam in venster Namen Beheren
Afbeelding 10: lokale naam in venster Namen Beheren

 Wanneer een naam zowel in lokale als in globale vorm voorkomt, kan er verwarring ontstaan welke naam waar gebruikt wordt.

Op het blad met de lokale naam wordt altijd de lokale naam gebruikt. Op andere werkbladen wordt de globale naam gebruikt, tenzij voorafgegaan door de bladnaam die de lokale naam bevat: =Blad3!LokaleNaam

Wanneer een werkblad waarnaar één of meer globale namen verwijzen wordt gekopieerd naar dezelfde map, dan zal Excel automatisch op de kopie lokale kopieën van de namen maken. Afbeelding 11 toont het gevolg voor de gedefinieerde namen in het dialoogvenster "Namen Beheren".

Merk op, dat de (identiek genoemde) globale namen niet zomaar gewijzigd kunnen worden. Daartoe moet een ander werkblad worden geselecteerd.

Namen beheren venster na kopie van blad met namen
Afbeelding 11: Namen beheren venster na kopie van blad met namen

Speciale namen

Excel zelf gebruikt ook namen om bepaalde zaken te regelen. De tabel hieronder geeft enkele voorbeelden:

Gebruikte optie
Voorbeeld van naam
Afdrukbereik
Blad1!Afdrukbereik
Afdruktitels
Blad1!Afdruktitels
Criteria Geavanceerd filter
Blad1!Criteria

Het is niet verstandig deze namen te verwijderen, dit kan beter aan Excel overgelaten worden.

Een stap verder: een formule in een gedefinieerde naam

Tot nu toe verwezen de namen in dit artikel steeds naar een bereik cellen. In werkelijkheid is een naam eigenlijk aan een formule gekoppeld. In het geval van een celbereik in de eenvoudige vorm van bijvoorbeeld =Blad1!$B$2:$B$4.

Maar in deze formule mag elke willekeurige functie van Excel worden toegepast. Ofwel: iedere functie die in een cel mogelijk is, kan ook in een naam gebruikt worden. Dit opent een wereld van mogelijkheden!

Bekijk Afbeelding 12. Hierop wordt (met cel B5 als actieve cel) de naam Kolomsom gedefinieerd. Hierbij wordt ook het principe van een relatieve verwijzing toegepast zoals al eerder besproken is. De formule in Kolomsom is:

=SOM(B$2:B$4)

Ofwel de som van de drie cellen van rij 2 tot en met 4 in dezelfde kolom.

Formule in naam
Afbeelding 12: Formule in naam

Door vervolgens in de cellen B5 tot en met D5 deze formule in te voeren: =KolomSom (zie Afbeelding 13), kan door middel van de formule in de naam KolomSom de som van de drie bovenliggende rijen worden bepaald. Het voordeel van een dergelijke werkwijze openbaart zich vooral bij complexe formules: bij een wijziging hoeft alleen de formule in de naam aangepast te worden en niet in vele cellen.

Formule in cellen
Afbeelding 13: Formule in cellen

Een andere handige eigenschap van bereiknamen is dat ze zich standaard gedragen als matrix formules.

Een dynamisch bereik in een naam

Vaak is het zo, dat totalen berekend moeten worden van lijsten waar op een later tijdstip nog gegevens aan toegevoegd zullen worden. Het is dan niet handig om steeds bij het toevoegen van gegevens de celbereiken in formules aan te moeten passen. Het is praktischer als dit automatisch gebeurt. Zie bijvoorbeeld Blad5 van Namen01.xls.

Door gebruik te maken van de functie VERSCHUIVING kan een bereik van cellen worden "berekend". De functie wordt als volgt opgebouwd:

=VERSCHUIVING(startadres;AantalRijenOmlaag;AantalKolommenNaarRechts;AantalRijen;AantalKolommen)

Als start adres wordt cel B2 op Blad5 genomen: Blad5!$B$2 Het aantal rijen omlaag is nul: 0 Het aantal kolommen naar rechts ook nul: 0 Het aantal te gebruiken rijen wordt uitgerekend middels de AANTALARG functie. Deze functie telt het aantal cellen in een bereik waarin iets is ingevuld (inclusief tekst): AANTALARG(Blad5!$A:$A)-1.

Omdat de rij met titels niet moet meetellen is er 1 van het resultaat afgetrokken. Ten slotte moet het aantal kolommen worden ingevuld: 1 De gehele formule zal er dan als volgt uit moeten zien:

=VERSCHUIVING(Blad5!$B$2;0;0;AANTALARG(Blad5!$A:$A)-1;1)

Deze formule is ingevuld in de naam "AppelsDynamisch", zie Afbeelding 14.

Definitie dynamische naam
Afbeelding 14: Definitie dynamische naam

Door kolom A te gebruiken om te bepalen hoeveel rijen er zijn, zal het bereik van deze nieuwe naam altijd gebaseerd zijn op het aantal ingevulde cellen in die kolom. Deze kolom mag daarom ook geen andere ingevulde cellen bevatten buiten het bereik van de tabel met de gegevens (bijvoorbeeld cel A100), anders klopt het aantal niet. Ook lege cellen in het bereik dat wél interessant is leiden natuurlijk tot problemen, omdat er dan te weinig regels meegenomen gaan worden.

Wanneer nu een nieuw "gebied" aan de tabel wordt toegevoegd in cel A5, bijvoorbeeld Australië, dan zal de naam AppelsDynamisch automatisch gaan verwijzen naar het bereik B2:B5. Als dus een verkoopcijfer voor appels in Australië wordt ingevoerd, dan wordt dat vanzelf in het totaal verwerkt. Om de bereiken voor peren en bananen ook dynamisch te maken, wordt weer de VERSCHUIVING functie gebruikt. Nu wordt deze echter gerelateerd aan de al bestaande dynamische naam AppelsDynamisch. PerenDynamisch wordt gedefinieerd als:

=VERSCHUIVING(AppelsDynamisch;0;1)

Ofwel: het bereik AppelsDynamisch met een verschuiving van 1 kolom naar rechts. Op soortgelijke wijze wordt BananenDynamisch gedefinieerd:

=VERSCHUIVING(AppelsDynamisch;0;2)

Ten slotte kan de gehele tabel ook nog dynamisch gemaakt worden, zodat toevoegingen in de breedte ook worden verwerkt: "Omzetdynamisch".

=VERSCHUIVING(Blad5!$B$2;0;0;AANTALARG(Blad5!$B:$B)-1; AANTALARG(Blad5!$1:$1)-1)

Hierbij wordt dus zowel het aantal rijen als het aantal kolommen waarnaar deze naam verwijst berekend.

De werking van deze namen kan worden gecontroleerd door in het werkblad Blad5 op de toets F5 (Ga Naar) te drukken, de naam in het verwijzing vak in te vullen en op OK te klikken. Als het goed is wordt het berekende bereik dat bij die naam hoort dan geselecteerd.

Een praktijkvoorbeeld van dynamische namen in combinatie met een grafiek is te zien in het bestand autochrt.zip.

Nog een stap verder: XL4 Macro functies in gedefinieerde namen

Nog minder bekend dan het gegeven dat men functies in namen kan toepassen is het feit, dat ook XLM macro functies (de oude macro commando’s van Excel versie 4) kunnen worden gebruikt. Hiermee kunnen oplossingen gemaakt worden die normaal gesproken slechts met VBA mogelijk zijn. Één waarschuwing vooraf is wel noodzakelijk: Bij verschillende versies van Excel kunnen cellen die gebruik maken van namen waarin XLM functies gebruikt zijn NIET naar een ander blad worden gekopieerd. Excel kan dan crashen! Kopiëren binnen een werkblad of het kopiëren van alleen de formule (door de tekst van de formule in het formulevak of in de cel te selecteren en te kopiëren) is geen probleem.

Voorbeeld 1: een lijst van bestanden in een werkblad aanmaken.

Het kan handig zijn een lijst met de bestanden in een bepaalde directory in een werkblad in Excel te krijgen. Met behulp van de macrofunctie BESTANDEN kan dit worden gerealiseerd. De naam "Bestanden" wordt gedefinieerd, met de volgende formule:

=BESTANDEN(Blad6!$C$2).

In een werkblad wordt vervolgens in bijvoorbeeld cel C2 de naam van de map en de gewenste wildcard ingevoerd, bijvoorbeeld c:\*.* . In een kolom, startend vanaf rij 1, kan de lijst met bestanden via de volgende formule worden opgeroepen:

=INDEX(Bestanden;RIJ())

Deze cel moet vervolgens omlaag gekopieerd worden totdat de formules #VERW! als resultaat geven, ten teken dat er geen verdere bestanden meer zijn. Zie Afbeelding 15. Door een ander pad of bestandsstructuur in cel C2 in te voeren kan een lijst voor een andere map of een andere set bestanden worden gemaakt.

een lijst met bestanden maken met de XLM functie BESTANDEN
Afbeelding 15: een lijst met bestanden maken

Voorbeeld 2: de vulkleur van een cel lezen.

Met de functie CEL.LEZEN kunnen allerlei eigenschappen van een cel worden opgevraagd. Onder andere de achtergrondkleur. Hiertoe is de volgende naam gedefinieerd, terwijl cel B2 actief was: Naam: CelKleur Verwijst naar: =CEL.LEZEN(63;Blad7!A2)+Nu()*0 De toevoeging NU()*0 zorgt ervoor, dat de naam bij elke herberekening wordt meegenomen. Het argument 63 geeft aan, dat de achtergrondkleur moet worden opgevraagd. Zie afbeelding 16.

definitie van de naam CelKleur
Afbeelding 16: definitie van CelKleur

Merk op, dat een relatieve verwijzing is gebruikt, zodat de naam celkleur de kleurindex zal weergeven van de cel links ten opzichte van de cel met de formule =CelKleur Omdat een verandering van de achtergrondkleur van een cel geen herberekening veroorzaakt, zal deze formule helaas niet bijgewerkt worden als een ander vulkleur wordt gekozen. Met deze methode is het mogelijk om bijvoorbeeld alle blauwe cellen op te tellen in een bepaald bereik(zie afbeelding 17).

optellen cellen met bepaalde kleur
Afbeelding 17: optellen cellen met bepaalde kleur

Voorbeeld 3: Alleen de getoonde decimalen optellen in een cel.

Wanneer getallen in een cel worden afgerond door gebruik te maken van een bepaald getalsformaat (bijvoorbeeld op 1 cijfer achter de komma), dan kunnen afrondingsverschillen ontstaan wanneer een reeks cellen wordt opgeteld. Dit komt omdat Excel blijft rekenen met de getallen/uitkomsten die werkelijk in de cel staan en niet met de getoonde getallen. Via de functie CEL.LEZEN kan de getoonde waarde van een cel worden opgevraagd. Hiervoor is de onderstaande naam gebruikt:

Naam: GetalInCel Verwijst naar: =CEL.LEZEN(53;Blad8!A2)+NU()*0

Zie afbeelding 18.

Optellen getoonde waarden
Afbeelding 18: Optellen getoonde waarden

Duidelijk is te zien dat de SOM functie een ander resultaat (18,9) geeft dan men op basis van de getoonde cijfers zou verwachten (18,8). Natuurlijk kan dit effect ook worden bereikt door de functie AFRONDEN te gebruiken en vervolgens de afgeronde getallen op te tellen. In de hier gebruikte methode zal het resultaat zich echter automatisch aanpassen indien de opmaak van de getallen wordt aangepast (na herberekenen).

Voorbeeld 4: Automatisch naar het vorige en volgende werkblad verwijzen.

Het kan nog wel eens handig zijn om een methode te hebben waarmee verwezen kan worden naar cel(len) op het voorgaande werkblad. Dus zelfs wanneer dat blad verplaatst wordt, blijft de functie verwijzen naar het blad direct links van het huidige. Indien de formule gekopieerd wordt van Blad2 naar Blad3, zullen de formules op Blad3 nu verwijzen naar Blad2 en niet naar Blad1. Normaal zal een gekopieerde formule blijven verwijzen naar het blad waarnaar het al verwees. Zie ook het bestand Namen02.xls op de CD. Hiertoe is een combinatie van verschillende namen nodig. De volgende functie geeft een lijst van alle werkbladen in een werkmap:

=WERKMAP.LEZEN(1+0*NU())

Deze functie is gebruikt in de naam "AlleBladen". Het resultaat van AlleBladen zal deze matrix zijn:

{[namen02.XLS]Blad1;[namen02.XLS]Blad2;[namen02.XLS]Blad3}

De naam van het huidige blad (het blad waarin de onderstaande naam is toegepast) kan worden bepaald met:

=CEL.LEZEN(32+0*NU();INDIRECT(GetRC;ONWAAR))

De formule INDIRECT(GetRC;ONWAAR) heeft altijd als resultaat de cel waarin een naam gebruikt wordt die die functie aanroept. De functie GetRC bepaalt welke letters Excel moet gebruiken voor de aanduiding van rij en kolom. In een Nederlandse Excel versie is dat RK, in de Engelse RC:

Naam: GetRC

Formule: =SUBSTITUEREN(VERWIJZING.TEKST(!$A$1);1;"")

CEL.LEZEN(32;..) geeft de naam van het werkblad waarnaar deze functie verwijst, voorafgegaan door de bestandsnaam. Op Blad2 is het resultaat van deze functie (toegepast in de naam DitBlad) dus: [namen02.XLS]Blad2

Door nu de volgende functie te gebruiken kan de naam van het vorige werkblad worden bepaald (gedefinieerd als "VorigBlad"):

=INDEX(AlleBladen;VERGELIJKEN(DitBlad;AlleBladen;0)-1)

De VERGELIJKEN functie geeft hierbij de positie van de naam van het huidige blad in de lijst met werkbladen. Door 1 af te trekken van dit getal wordt dus de positie van het voorgaande werkblad aangegeven. Vervolgens wordt via de INDEX functie de naam van dat voorgaande werkblad bepaald. Op dezelfde manier kan het volgende blad worden verkregen (gedefinieerd als "VolgendBlad"):

=INDEX(AlleBladen;VERGELIJKEN(DitBlad;AlleBladen;0)+1)

Indien nu verwezen moet worden naar cel B2 op het vorige blad, dan kan dit met de onderstaande formule (in een cel):

=INDIRECT("'"&VorigBlad&"'!"&CEL("address";B2))

En evenzo voor het volgende werkblad:

=INDIRECT("'"&VolgendBlad&"'!"&CEL("address";B2))

Het bestand Arg2Name.zip op de download pagina geeft enkele voorbeelden van het toepassen van XLM macro functies in namen. Om inzicht te krijgen in wat nog meer mogelijk is, kan het Microsoft Help bestand voor de XLM functies (in verschillende talen, waaronder Nederlands) gevonden worden op deze pagina

Argumenten doorgeven naar formule in een naam

Dit deel is met de komst van de LAMBDA functie volledig overbodig geworden. Dus heb je Excel als onderdeel van Microsoft 365 en zit je op het Monthly channel, lees dan dit artikel: Excel LAMBDA functie, De basis

Zoals is te zien in het bestand Arg2Name.zip (zie de download pagina), is er een truc om een argument door te geven aan een formule in een naam.

Allereerst dient een naam Myref (zie hieronder) te worden gemaakt, welke de tekst van de formule van de aanroepende cel (de cel waarin één van de onderstaande namen voorkomt) evalueert en daar de tekst "Rij(" in opzoekt. De formule moet als volgt worden opgebouwd:

=ALS(RIJ(ref),NaamVanDeGedefinieerdeFormule)

Alle tekens na "RIJ(" en voor het eerste haakje sluiten worden vervolgens door de naam myref doorgegeven aan de andere naam en in de INDIRECT functie van die naam in een echt bereik omgezet.

MyRef:

=MIDDEN(CELL.LEZEN(6;INDIRECT(GetRC;ONWAAR));VIND("RIJ(";CELL.LEZEN(6; INDIRECT(GetRC;ONWAAR)))+4;VIND(")";CELL.LEZEN(6;INDIRECT(GetRC;ONWAAR)))-VIND("RIJ(";CELL.LEZEN(6;INDIRECT(GetRC;ONWAAR)))-4)

Merk op, dat in Myref ook de naam GetRC wordt gebruikt. Dit is gedaan om te voorkomen dat MyRef aan de taal van uw Excel moet worden aangepast. De functie GetRC haalt de juiste spelling van "RK" (in het Engels "RC") op en gebruikt die in MyRef:

Naam: GetRC

Formule: =SUBSTITUEREN(VERWIJZING.TEKST(!$A$1);1;"")

Hier een paar voorbeelden:

IsFormula =CELL.LEZEN(48;INDIRECT(myref)))+0*now()

CellColor =CELL.LEZEN(63;indirect(MyRef))+0*now()

RowIsHidden =IF(CELL.LEZEN(17;INDIRECT(Myref))=0;TRUE;FALSE)+0*now()

RowHeight =CELL.LEZEN(17;INDIRECT(Myref))+0*NOW()

Een voorbeeld hoe deze funkties in een cel moeten worden gebruikt:

=ALS(RIJ(D3);CellColor)

Toont de kleurindex van de achtergrond van cel D3.

=IF(ROW(D3),RowHeight)

Toont de regelhoogte van regel 3 (cel D3).

Bugs in Excel's naam object

Tijdens de ontwikkeling van de Name Manager,  is een aantal bugs in Excel's naam object gevonden.

RefersToLocal

De RefersToLocal eigenschap van een naam accepteert slechts een Engelse formule. Bijvoorbeeld deze programmaregel:

Names("Test").RefersToLocal="=SOM($A$1;$B$1)"

geeft in de Nederlandse Excel een foutmelding, zelfs als Excel een dergelijke formule gewoon in een cel accepteert. In de Name Manager is hiervoor een oplossing gemaakt.

Via VBA formulier naam definieren tonen

Wederom een probleem voor niet Engelse Excel versies: Wanneer men via VBA het formulier Naam definieren toont, via:

Application.Dialogs(xlDialogDefineName).Show

of

Application.CommandBars(1).FindControl(ID:=878, recursive:=True).Execute

dan zal Excel de celverwijzing altijd weergeven in R1K1 notatie, ongeacht de instelling van Excel.

Namen van werkbladen met speciale tekens

Wanneer men een naam creëert op een blad genaamd "Test":

Naam: Test!test

Verwijst naar: "1"

en vervolgens het blad een andere naam geeft, bijvoorbeeld "Hallo! daar!" (zonder de aanhalingstekens), dan wordt deze naam ontoegankelijk voor bewerken en/of wissen. Andere vreemde karakters in bladnamen (zoals "[", "]" en char(3) ) kunnen zelfs leiden tot het vastlopen van Excel, wanneer geprobeerd wordt lokale naam in deze bladen te bewerken. De Name Manager waarschuwt in geval dit zich voordoet.

Globale en lokale namen met dezelfde naam

Wanneer men een lokale naam heeft op het actieve werkblad en er een globale naam is met dezelfde naam, dan zullen de eigenschappen van de lokale naam worden gewijzigd wanneer men tracht de globale naam te wijzigen, zelfs indien men de naam van de werkmap voor de globale naam plaatst (de aangegeven methode om een globale naam aan te duiden). De Name Manager voorkomt deze problemen en bewerkt altijd de naam die u selecteert.

Namen waarvan de "verwijst naar" eigenschap begint met =!

(bijvoorbeeld =!$A$1) kunnen onverwachte resultaten geven als de herberekening van Excel veroorzaakt wordt door VBA. Dergelijke namen zouden de waarde van de aangegeven cel op het blad waar de naam in gebruikt is moeten geven, maar wanneer de herberekening vanuit VBA wordt gestart geven dergelijke namen ineens de waarde uit een cel van het actieve werkblad weer. De Name Manager zal een waarschuwing geven wanneer een naam met een dergelijke verwijzing wordt aangetroffen.

Mocht u een naam wensen die altijd verwijst naar een cel op het blad waarin die naam gebruikt wordt, gebruik dan:

=INDIRECT("A1") in plaats van =!$A$1 .

Conclusie

Dit artikel heeft inzicht willen geven in de kracht van Bereiknamen in Excel. Startend met het eenvoudigweg benoemen van een bereik cellen, voortgezet met de krachtige optie om Excel’s werkblad functies in namen toe te passen, tot en met het gebruiken van XLM macro functies om daarmee nog meer mogelijkheden te ontsluiten. Door een juiste toepassing van namen kunnen geavanceerde en onderhoudsvriendelijke rekenbladen worden gebouwd.

Name Manager

Het maken en bewerken van bereiknamen in een bestand is veel eenvoudiger met deze utility!

Er zijn meer websites met uitgebreide informatie over bereiknamen. Een site die aan te bevelen is:

Chip Pearson (Engels)


Vragen, suggesties en opmerkingen

Al het commentaar over deze pagina:


Commentaar van: Arnoud Vree (10-7-2011 03:01:05) deeplink naar dit commentaar

zit al een tijdje vast met onderstaande code:

heb al heel wat geprobeerd maar kom er maar niet uit om een bereik te difinieren aan een naam.


Sheets("Spelers").Select
Range("A" & CStr(Rows.Count)).End(xlUp).Select
laatste = ActiveCell.Offset(0, 7).Address

With ActiveWorkbook.Names("Deelnemers")
        .Name = "Deelnemers"
     .RefersToR1C1 = "=Spelers!R1C8:" & laatste
        End With
End Sub


Het doel van deze is om een Validatielijst op een ander werkblad telkens te kunnen veranderen.


(11-7-2011 00:26:01) deeplink naar dit commentaar

Hallo Arnoud,

Welke Excel versie heb je?

Indien 2003 of hoger, selecteer je lijst met namen, druk op control+l om er een tabel (2007/2010) of Lijst (2003) van te maken. Selecteer nu het bereik dat een naam moet krijgen en bepaal de naam. Als het goed is, past de bereiknaam zich nu vanzelf aan.


Commentaar van: Johan (22-7-2011 00:59:57) deeplink naar dit commentaar

Is het ook mogelijk gedefiniëerde namen te kopieren naar een ander werkblad


Commentaar van: Jan Karel Pieterse (22-7-2011 07:24:37) deeplink naar dit commentaar

Hallo Johan,

Niet eenvoudig. Je zou mijn Name Manager kunnen gebruiken en dan de List optie aanklikken (die maakt een lijst vande bereiknamen). Als je die lijst bewerkt voor alleen de bereiknamen die je wilt kopieren, dan kan je na het starten van Name manager de knop "Pick up" gebruiken om die bewerkte bereiknamen te laten maken.

Let op: Je kan niet twee dezelfde -globale- bereiknamen hebben. Als je dezelfde namen wilt, dan moet je die lokaal definieren, dus met de werkbladnaam ervoor:
'Blad naam'!BereikNaam


Commentaar van: Erdogan Sener (25-2-2013 11:18:25) deeplink naar dit commentaar

Is er een maximaal aantal te benoemen bereiknamen in een excel bestand? Ik heb ongeveer 42 bereiknamen gedefinieerd, maar vele worden niet herkend in formules.
alvast bedankt en groet
E. Sener


Commentaar van: Jan Karel Pieterse (25-2-2013 16:43:42) deeplink naar dit commentaar

Hallo Erdogan,

Er is een maximum, maar het is echt heel veel hoger dan 42. Ik heb bestanden gezien met meer dan 10.000 namen (niet dat dat wenselijk is!).
Er is zeer waarschijnlijk iets anders mis.


Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.

Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.




Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].