• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VB script - regex - maanden (tekst) naar getallen

Status
Niet open voor verdere reacties.

hmwul

Gebruiker
Lid geworden
15 dec 2012
Berichten
433
Op voorhand, ik ben niet echt thuis in vb script in Excel.

Ik wil het volgende:
stel een kolom met datums in diverse formaten (zie hieronder)
1) selecteer een kolom
2) dan een vbs-macro uitvoeren

die macro moet alle maanden in tekst omzetten naar getallen.
misschien dat dit middels regular expressions zou kunnen.

voorbeeld:

in de kolom staan de datums als volgt
13-Januari-2017
13 Januari 2017
13-Jan-2017
13 Jan 2017
13-January-2017
13 January 2017
3-Januari-2017
3 Januari 2017
3-Jan-2017
3 Jan 2017
3-January-2017
3 January 2017
Jan 13, 2017
Jan 13 2017
January 13 2017
January 13, 2017

regex - match1 ^(\d{2})[\s-](janu?a?r?[iy]?)[\s-](\d{4})
'de eerste 6 'matchen'
repl: repl_match1 $1-01-$3

volgende
regex - match2 ^(\d{1})[\s-](janu?a?r?[iy]?)[\s-](\d{4})
'de volgende 6 matchen
repl: repl_match2 0$1-01-$3

enz..

dan
if match1
replace repl_match1
elseif match2
replace repl_match2
elseif match3
enz.
enz.
endif

De regex code, daar kom ik wel uit denk ik.
Maar ik heb geen idee hoe ik dat in een script moet vervatten, zeg maar.
(met variabelen, bla bla)

Als ik eenmaal een begin heb, dan kan ik dat verder wel completeren.

Thanks
=

SnagIt-13012017 112719.png
 
gebruik gewoon zoeken/vervangen in Excel.
 
Dank voor de reactie, maar .. sorry, hier heb ik niet veel aan. Deze eenvoudige oplossing had ik ook wel kunnen verzinnen. Echter, dat wordt dan wel klussen, met heel veel zoek en vervang opdrachten.
=
 
Is eenvoudiger te programmeren in VBA (3 regels) dan het gebruik van regex.
 
Met een UDF-User defined formule-zelf gemaakte formule.
Geldt voor alle dagen van 1 of 2 cijfers, alle maanden van 3 of meer letters, en alle jaren van 4 cijfers.
Let op met maa, maart en niet mrt.

in Module1:
Code:
[SIZE=1]Option Explicit

Function RegExDatum(strDatum As String) As String
    Dim strDag As String
    Dim strMaand As String
    Dim strJaar As String
        With CreateObject("vbscript.regexp")
            .Global = True
            .Pattern = "\b\d{1,2}\b"    'dag 1 of 2 cijfers
            strDag = .Execute(strDatum)(0).Value
            .Pattern = "\b[a-zA-Z]{3}"    'maand 3 of meer letters
            strMaand = CStr(Application.Match(.Execute(strDatum)(0).Value, Split("jan,feb,maa,apr,mei,jun,jul,aug,sep,okt,nov,dec", ","), 0))
            .Pattern = "\b\d{4}\b"    'jaar 4 cijfers
            strJaar = .Execute(strDatum)(0).Value
            RegExDatum = strDag & "-" & strMaand & "-" & strJaar
        End With
End Function[/SIZE]
 

Bijlagen

  • helpmij hmwul regex datum.xls
    38,5 KB · Weergaven: 30
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan