Excel: Cel met formule als zoekwaarde gebruiken bij x.zoeken

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Ym87
  • Registratie: Januari 2024
  • Laatst online: 24-09-2024
Het is de bedoeling dat ik voor digitale archivering diverse metadata bij elkaar zet per bestand bij een lijst van meer dan 9000 bestanden (groot deel jpeg bestanden). Wat ik ter beschikking heb is een lokale schijf waar al deze bestanden op staan, en een Excel bestand met een archiefoverzicht, waar inventarisnummers in staan en per inventarisnummer gegevens als titel van het inventaris, beschrijving, etc. Vaak vallen er meerdere bestanden onder één inventarisnummer. In het archiefoverzicht is niet vermeld welke bestanden binnen het inventarisnummer vallen. Andersom is wel in de bestandsnaam benoemd tot welk inventarisnummer het bestand behoort.

Nu heb ik een Excel bestand gemaakt met:

- 1 tabblad met van alle bestanden het bestandspad en andere gegevens die ik uit Windows kon trekken via Command Prompt (zoals grootte, creatiedatum, etc.).
- 1 tabblad met de archiefgegevens die ik aangeleverd heb gekregen

Om de metadata bij elkaar te krijgen, moet ik gegevens uit het archiefoverzicht per bestand noteren (dus in het eerste tabblad). Wat ik nu heb gedaan, is het inventarisnummer uit de bestandsnaam gehaald met een geneste formule van tekst.voor en tekst.na, bijv:

Bestandspad = “j:\Huppeldepup\Fotoarchief\1988\1988.22_328 korven.jpg”
Inventarisnummer in bovenstaand geval = “328”
Formule die ik heb gebruikt om inventarisnummer eruit te halen = “=TEKST.VOOR(TEKST.NA(P677;"_");" ")”

Dat heb ik dus voor meer dan 9000 bestanden gedaan. En nu wil ik dus aan de hand van het inventarisnummer meerdere gegevens uit het tabblad met het archiefoverzicht halen, zoals de beschrijving. Dat wil ik doen aan de hand van x.zoeken. Dit werkt prima als ik van het inventarisnummer - dat ik met de tekst.voor en tekst.na formule uit het bestandspad getrokken heb - een absolute waarde maak. Dan kan ik netjes de gewenste gegevens per bestand uit het andere tabblad trekken op basis van het inventarisnummer. Dit werkt echter niet als ik de formule in de cel laat staan en ik van het inventarisnummer dus geen 'platte waarde' maak. Dan krijg ik ineens de foutmelding #N/B. Van de tekst kan ik geen absolute waarde maken, want het archief en de bestandsnamen kunnen aan verandering onderhevig zijn en als er iets verandert dan moet de formule ervoor zorgen dat de rest automatisch mee wijzigt. Daarnaast moet achteraf om archiefmatige redenen terug te vinden zijn hoe alle data tot stand zijn gekomen (dus door de formule achter de waarde te kunnen zien).

Ik heb me helemaal suf gezocht hoe ik een formule x.zoeken kan gebruiken met als zoekwaarde een cel waar een formule achter zit, zonder dat ik hier een absolute waarde van moet maken. Ik kan niets vinden wat dit probleem oplost. Ik heb zaken als ‘indirect’ e.d. gebruikt, maar dat is echt alleen voor verwijzingen naar andere cellen en werkt niet voor dit probleem.

Overigens ben ik (nog) geen ICT’er en ben ik pas beginnend op dit gebied, dus ik kan niks met macro’s en VBA e.d. Ik hoop eerlijk gezegd dat er een of andere magische, eenvoudige oplossing is die ik over het hoofd zie..

Beste antwoord (via Ym87 op 06-02-2024 15:20)


  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 18:53

g0tanks

Moderator CSA
Ik gok dat de formule het inventarisnummer teruggeeft als tekstwaarde, ondanks dat het een nummer betreft. Hierdoor herkent X.ZOEKEN het niet omdat in je overzicht het inventarisnummer wel echt een nummer is.

Een simpele oplossing is om het resultaat te vermenigvuldigen met 1:

code:
1
=TEKST.VOOR(TEKST.NA(P677;"_");" ")*1

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW

Alle reacties


Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 18:53

g0tanks

Moderator CSA
Ik gok dat de formule het inventarisnummer teruggeeft als tekstwaarde, ondanks dat het een nummer betreft. Hierdoor herkent X.ZOEKEN het niet omdat in je overzicht het inventarisnummer wel echt een nummer is.

Een simpele oplossing is om het resultaat te vermenigvuldigen met 1:

code:
1
=TEKST.VOOR(TEKST.NA(P677;"_");" ")*1

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • +2 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

^^^ Dat. Iets netter is de functie waarde te gebruiken: dan is het over een maand of zo nog steeds duidelijk wat je doet ipv dat je je afvraagt waarom dat rare *1 in de formule staat. Dus iets als “=waarde([jouw formule])

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Ym87
  • Registratie: Januari 2024
  • Laatst online: 24-09-2024
@g0tanks Halleluja!! Dat is het inderdaad. Weer wat geleerd :-)

Ik heb het ook nog geprobeerd met de tip van @Lustucru, aangezien dat inderdaad wat netter zou zijn. Echter pakt hij dat dan weer niet. Of ik moet ook daar weer iets fout doen. Maar dat is niet erg, want ik heb in een apart document de werkwijze bijgehouden (ja, het is heel wat documentatie, haha), dus daar kan ik dan wel in noteren waarom er *1 in de formule staat. Het probleem is in elk geval opgelost.

Ontzettend bedankt, jullie hebben mijn dag gemaakt!