› Varie ed Eventuali (Off Topic) › REGEX (Excel lato formule)
-
AutoreArticoli
-
Posto qui questa riflessione, nelle Varie, così disturbo le altre discussioni il meno possibile.
Tra le nuove funzioni, Excel 365 mette a disposizione REGEX. In una parola: è una bomba
Avevo la necessità di suddividere una colonna contenente migliaia (letteralmente) di informazioni di questo tipo: "REP. INT. N. 197 DEL 04/01/2024". Dovevo separare il numero di repertorio dalla data e sistemarle in due colonne adiacenti (per comodità di filtro ovviamente).
Siccome un pochino di regex le mastico (essenzialmente per python) mi sono detto: proviamo?
male che va chiedo a Gianfranco
Bè in realtà è stato facilissimo e in due secondi ho ottenuto il risultato. Ecco le due formule magiche:
=REGEX.ESTRAI(M4;"\d+")
=REGEX.ESTRAI(M4;"\d{0,2}/\d{0,2}/\d{4}")E ottengo 197 da una parte, 04/01/2024 dall'altra.
Al netto di errori nelle celle, di cui mi accorgo ovviamente immediatamente (tipo un REP. INT. N0). E la figata eè che funziona anche se ci sono spazi in più o in meno, cosa di cui avrei dovuto tener conto con altre formule di ricerca ed estrazione.Avevo la necessità di suddividere una colonna contenente migliaia (letteralmente) di informazioni di questo tipo: "REP. INT. N. 197 DEL 04/01/2024". Dovevo separare il numero di repertorio dalla data e sistemarle in due colonne adiacenti (per comodità di filtro ovviamente).
A dire il vero sul mio Excel 2010 ci sono già da molti anni:
=fRegEx_Estrai(M4;"\d+")=fRegEx_Estrai(A1;"\d{0,2}/\d{0,2}/\d{4}")Public Function fRegEx_Estrai(ByVal sTextUt As String, sPatt As String, Optional ByVal bCase As Boolean) As Variant 'Riferimenti: Microsoft VBScript Regular Expression 5.5 Dim oRE As RegExp, oMatches As MatchCollection, vRet As Variant Set oRE = New RegExp With oRE .Global = True .IgnoreCase = bCase .Pattern = sPatt If .Test(sTextUt) Then Set oMatches = .Execute(sTextUt) vRet = oMatches(0) If IsDate(vRet) Then vRet = CDate(vRet) ElseIf IsNumeric(vRet) Then vRet = --vRet End If Else vRet = "" End If End With fRegEx_Estrai = vRet Set oRE = Nothing Set oMatches = Nothing End Function
sul mio Excel 2010 ci sono già da molti anni
Il solito mattacchione
-
AutoreArticoli
