Varie ed Eventuali (Off Topic) REGEX (Excel lato formule)

Login Registrati
Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #51242 Score: 0 | Risposta

    vecchio frac
    Senior Moderator
      272 pts

      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.

      #51248 Score: 0 | Risposta

      scossa
      Partecipante
        37 pts

        vecchio frac ha scritto:

        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
        

         

        #51249 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          scossa ha scritto:

          sul mio Excel 2010 ci sono già da molti anni

          Il solito mattacchione       

        Login Registrati
        Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
        Rispondi a: REGEX (Excel lato formule)
        Gli allegati sono permessi solo ad utenti REGISTRATI
        Le tue informazioni: