Ik ben voor m'n werk een geautomatiseerde excel-spreadsheet op te zetten waarin scores van projecten worden bijgehouden. Per project is er een tabblad waarin basisinfo staat (naam aanvrager, naam project) en de scores van een adviescommissie.
Deze basisinfo wordt met een zoekfunctie uit een overzichtsblad gehaald, waar alle projecten in staan. Als zoekfunctie gebruikt excel het projectnummer, dat gelijk is aan de tabbladnaam.
Uiteraard wil ik zo min mogelijk met de hand moeten invoeren en als het moet, maar maximaal 1 keer, om én de kans op fouten zo klein mogelijk te maken, én om bij toekomstige projecten het aanpassen van de spreatsheet zo simpel mogelijk te maken.
Nu moet ik het projectnummer nog met de hand invoeren in zowel het tabblad als de bewuste cel, maar het is mogelijk om de naam van een tabblad automatisch in een cel te plaatsen.
Dat doe ik met de volgende formule:
Een kleine toelichting:
CEL("bestandsnaam") :
Geeft als resultaat het volledige pad + bestandsnaam tussen rechte haken ([&]) en daarachter de naam van het tabblad.
VIND.SPEC("]";CEL("bestandsnaam");1) :
Zoekt de positie van teken "]" tellend vanaf karakter 1 (achter "]" staat de naam van het tabblad)
DEEL(CEL("bestandsnaam");VIND.SPEC("]";CEL("bestandsnaam");1)+1;10) :
De uiteindelijke formule, waarbij de waarde van VIND.SPEC + 1 (de tekst die ik wil hebben start namelijk 1 positie verder dan de positie van de zoekwaarde) de begin waarde van het deel uit het resultaat van CEL("bestandsnaam") dat ik wil hebben bepaald en vervolgens de 10 opvolgende tekens als resultaat geeft.
Dit werkt op zich goed en is volgens mij ook de kortst mogelijke formule om tot het gewenste resultaat te komen.
Maar nu het probleem.
Het resultaat dat weergegeven wordt, is in alle tabbladen waar deze formule toegepast wordt, gelijk, namelijk de naam van het laatste tabblad waar deze formule is toegepast en niet de naam van het bewuste tabblad.
De bron van het probleem zit in de functie CEL("bestandsnaam"), deze geeft op elk tabblad namelijk hetzelfde resultaat. Hoe is dit op te lossen?
Andere oplossingen die hetzelfde zouden kunnen doen, werken met VBA, maar daar wil ik liever vandaan blijven, wegens én gebrek aan kennis en problemen intern wat betreft beveiliging en veiligheidsrisico's met scripts (waardoor een VBA-script dus onbetrouwbaar wordt).
Deze basisinfo wordt met een zoekfunctie uit een overzichtsblad gehaald, waar alle projecten in staan. Als zoekfunctie gebruikt excel het projectnummer, dat gelijk is aan de tabbladnaam.
Uiteraard wil ik zo min mogelijk met de hand moeten invoeren en als het moet, maar maximaal 1 keer, om én de kans op fouten zo klein mogelijk te maken, én om bij toekomstige projecten het aanpassen van de spreatsheet zo simpel mogelijk te maken.
Nu moet ik het projectnummer nog met de hand invoeren in zowel het tabblad als de bewuste cel, maar het is mogelijk om de naam van een tabblad automatisch in een cel te plaatsen.
Dat doe ik met de volgende formule:
code:
1
| =DEEL(CEL("bestandsnaam");VIND.SPEC("]";CEL("bestandsnaam");1)+1;10) |
Een kleine toelichting:
CEL("bestandsnaam") :
Geeft als resultaat het volledige pad + bestandsnaam tussen rechte haken ([&]) en daarachter de naam van het tabblad.
VIND.SPEC("]";CEL("bestandsnaam");1) :
Zoekt de positie van teken "]" tellend vanaf karakter 1 (achter "]" staat de naam van het tabblad)
DEEL(CEL("bestandsnaam");VIND.SPEC("]";CEL("bestandsnaam");1)+1;10) :
De uiteindelijke formule, waarbij de waarde van VIND.SPEC + 1 (de tekst die ik wil hebben start namelijk 1 positie verder dan de positie van de zoekwaarde) de begin waarde van het deel uit het resultaat van CEL("bestandsnaam") dat ik wil hebben bepaald en vervolgens de 10 opvolgende tekens als resultaat geeft.
Dit werkt op zich goed en is volgens mij ook de kortst mogelijke formule om tot het gewenste resultaat te komen.
Maar nu het probleem.
Het resultaat dat weergegeven wordt, is in alle tabbladen waar deze formule toegepast wordt, gelijk, namelijk de naam van het laatste tabblad waar deze formule is toegepast en niet de naam van het bewuste tabblad.
De bron van het probleem zit in de functie CEL("bestandsnaam"), deze geeft op elk tabblad namelijk hetzelfde resultaat. Hoe is dit op te lossen?
Andere oplossingen die hetzelfde zouden kunnen doen, werken met VBA, maar daar wil ik liever vandaan blijven, wegens én gebrek aan kennis en problemen intern wat betreft beveiliging en veiligheidsrisico's met scripts (waardoor een VBA-script dus onbetrouwbaar wordt).
Waarschuwing, opperprutser aan het werk... en als je een opmerking van mij niet snapt, klik dan hier