Met wat knip- en plakwerk van het internet, gevolgd door enige correcties, is de volgende formule tot stand gekomen.
=ALS(ISLEEG(B2);"";ALS(ISGETAL(B2);JAAR(B2)*10000+MAAND(B2)*100+DAG(B2);WAARDE(RECHTS(B2;4)&TEKST(DEEL(B2;VIND.SPEC("-";B2)+1; VIND.SPEC("-";B2;VIND.SPEC("-";B2)+1)-VIND.SPEC("-";B2)-1);"00")&TEKST(DEEL(B2;1;VIND.SPEC("-";B2)-1);"00"))))
Deze formule WERKT voor de volgende formaten:
01-01-1750 (historisch, dus "tekst")
1-4-1789 (historisch, zonder 0)
1-1-2011 (hedendaags, dus "datum")
1-apr-11 (hedendaags, dus "datum")
dit werkt NIET voor de formaten:
1 april 1789 (historisch, met letters).

Deze laatste notatie zul je in een 1e hulpkolom naast de oorspronkelijke geboorte- of doopdatum kolom moeten vertalen met twaalf keer de ZOEK/VERVANG-functie. Voer geen vervangfuncties in de oorspronkelijke geboorte- of doopdatum kolom. Die moet je houden zoals die is. Je moet er sowieso handmatig doorheen om datumomschrijvingen, zoals ?In festo Inventionis Ste Crucis 1683? te vertalen naar de cijfermatige datum 06-03-1683 of doopinschrijvingen zonder datumvermelding. Je weet dan vaak wel het jaar en met geluk de maand, maar de dag niet. In de hulpkolom vertaal je die met 00-mm-jjjj.
In een 2e hulpkolom plaats je de formule, in dit geval in veld B3. Vervolgens kopieer dit veld en plak het in de velden eronder, zo vaak als nodig is. Op kolom B3 kan je nu goed sorteren.
Er worden 3 dingen gedaan in kolom 3:
ISLEEG(B2);"": als B2 leeg is geen waarde.
ISGETAL(B2);JAAR(B2)*10000+MAAND(B2)*100+DAG(B2): als B2 een getal is (een datum na 1-1-1900) dan wordt de datum omgezet naar een getal, jaar voorop dan maand dan dag
En de moeilijkste:
WAARDE(RECHTS(B2;4)&TEKST(DEEL(B2;VIND.SPEC("-";B2)+1; VIND.SPEC("-";B2;VIND.SPEC("-";B2)+1)-VIND.SPEC("-";B2)-1);"00")&TEKST(DEEL(B2;1;VIND.SPEC("-";B2)-1);"00"))
De tekst met daarin de geboortedatum moet omgezet worden naar een getal zoals bij de "echte" geboortedata (jaar-maand-dag).
Het jaar is vrij gemakkelijk dat zijn de laatse 4 cijfers uit de tekst (RECHTS(B2;4)).
De dag is ook eenvoudig. Dat is namelijk het gedeelte van de tekst vóór het eerste "-". (TEKST(DEEL(B2;1;VIND.SPEC("-";B2)-1);"00")) TEKST(....;"00") wordt toegevoegd omdat ander 4-1-1750 getransformeerd wordt tot 175014 een getal dat veel kleiner is dan 15-12-1623.
De maand is het lastigst:
TEKST(DEEL(B2;VIND.SPEC("-";B2)+1; VIND.SPEC("-";B2;VIND.SPEC("-";B2)+1)-VIND.SPEC("-";B2)-1);"00")
Met 4 x VIND.SPEC wordt het onoverzichtelijk. We zoeken de tekst tussen de 2 "-". Hiervoor gebruiken we de functie DEEL die een gedeelte van de tekst zoekt.
De eerste "-" vinden is geen probleem: VIND.SPEC(B2;"-");
De tweede "-" vinden we door te zoeken vanaf (1 karakter na) de eerste "-":
(VIND.SPEC("-";B2;VIND.SPEC("-";B2)+1)).
We hebben nu de positie uit de tekst en daar moet de positie van de eerste "-" nog van af. Ook hier maken we van de maanden een getal van 2 cijfers.
Zo, en nu ga ik gezinsreconstructies maken. Was er in dit topic niet iemand die schreef dat je dat in Excel mooi met filters en zo kan doen? Ik hou mij van harte aanbevolen, maar dan wel in een ander topic.
Groeten van een nawinterse spreadsheet dummy, Frank Bakkum