Dylan, il primo link che hai pubblicato contiene una dei migliori tutorial sull'uso delle Regex.
Lavorando col vba si puo' ottenere qualcosa di piu', ad esempio con una Funzione presonalizzata come questa:
- Codice: Seleziona tutto
Function AnyDate(ByVal myStr As String) As Variant
Dim mySplit, I As Long, aWord As String, evData
Dim aKill, aConv
'
aConv = Array(".", "-") '<<< Caratteri da convertire
aKill = Array(":", ",", ";", "!", "?") '<<< Caratteri da eliminare
'Elimina i pericolosi:
For I = 0 To UBound(aKill)
myStr = Replace(myStr, aKill(I), " ", , , vbTextCompare)
Next I
'Converti i possibili separatori:
For I = 0 To UBound(aConv)
myStr = Replace(myStr, aConv(I), "/", , , vbTextCompare)
Next I
mySplit = Split(myStr, " ", , vbTextCompare)
For I = 0 To UBound(mySplit) - 1
evData = ""
On Error Resume Next
evData = DateValue(mySplit(I))
On Error GoTo 0
If IsDate(evData) Then
AnyDate = evData
Exit For
End If
Next I
End Function
Il codice va messo in un modulo standard del vba, poi sul tuo foglio puoi scrivere una formula del tipo
- Codice: Seleziona tutto
=AnyDate(B14)
Sono risolte anche date scritte come 20-maggio-12, oppure 7-gen, oppure 7-genn; comunque meglio di quanto possa fare la Function RegExDate descritta nel secondo link di Dylan
Gli unici separatori ammessi sono "/" "." e "-"
"Giocando" sulle due righe marcate <<< puoi migliorare la situazione, man mano che trovi scritte fantasiose.
Ciao