Excel e gli applicativi Microsoft Office Estrarre parte di una stringa dopo gli zeri

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

    lucas

      Ciao a tutti,

      avrei bisogno di un aiuto per estrarre una parte di una stringa es.:

      7901000064432
      7901000129063
      7900000109020
      7900000004433

      dovrebbe estrarre

      6443
      12906
      10902
      0443

      cioè,togliere l’ultimo carattere, minimo 4 caratteri e poi tutto quello che viene dopo la serie di zeri..

      Grazie

      #5614 Score: 0 | Risposta

      lucas

        Cosa è successo ??

        #5615 Score: 0 | Risposta

        lucas

          ci riprovo...

          Ciao a tutti,

          avrei bisogno di un aiuto per estrarre una parte di una stringa es.:

          7901000064432
          7901000129063
          7900000109020
          7900000004433

          dovrebbe estrarre

          6443
          12906
          10902
          0443

          cioè,togliere l'ultimo carattere, minimo 4 caratteri e poi tutto quello che viene dopo la serie di zeri..

          Grazie

          #5647 Score: 1 | Risposta

          patel
          Moderatore
            51 pts

            si potrebbe fare con una macro, ti va bene ?

            prova questa UDF (funzione definita dall'utente)

            Function estrai4(s)
            s1 = Left(s, Len(s) - 1)
            s2 = Right(s1, 4)
            For c = Len(s1) - 4 To 1 Step -1
              s3 = Mid(s1, c, 1)
              If s3 <> "0" Then
                s2 = s3 & s2
              Else
                Exit For
              End If
            Next
            estrai4 = s2
            End Function

            #5708 Score: 0 | Risposta

            lucas

              La macro è ok, fa perfettamente il suo lavoro,solo che ho sbagliato io a non dire che quelle stringhe si trovano in un txt e poi importate in excel, chiedo se si puo' modificare la macro in modo che possa  leggere dal txt. Grazie.

              #5709 Score: 0 | Risposta

              giorgioantonio

                Salve,  da una formula salvata in VALORI  sono formate: un numero di una o 2 cifre*tre lettere di un mese*da 2 a 4 numeri es:23*mar*2455; oppure; 32*mag*33. Questi dati in colonna vorrei si posizionano dal più grande al più piccolo rispetto al numero dopo il secondo asterisco. nel caso dei 2 esempi primo il 2455 poi il 33. Grazie  

                #5711 Score: 0 | Risposta

                patel
                Moderatore
                  51 pts

                  giorgioantonio, non è permesso accodarsi a discussioni aperte da altri, aprine una tua con titolo adeguato e spiegati meglio, magari allegando un file di esempio

                  #5712 Score: 0 | Risposta

                  lucas

                    Patel scusami ho commesso un altro errore non andare avanti...adesso non ho il txt con me non posso verificare. Grazie

                    #5716 Score: 0 | Risposta

                    lucas
                    Partecipante

                      Buongiorno allego un file con le spiegazioni, perché mi dava problemi di:

                      *** Il messaggio è vietato. Il messaggio sembra di essere spam. ***

                      Grazie

                       

                      Allegati:
                      You must be logged in to view attached files.
                      #5827 Score: 0 | Risposta

                      Marius44
                      Moderatore
                        58 pts

                        Ciao Non c'è la possibilità di una delimitazione logica. Ipotizziamo le tue righe in A1:A6, se ti va bene, si può provare con questa macro ma ... c'è qualche numero di troppo (vedi celle U4:U5)

                        Sub Macro1()
                        Range("A1:A6").Select
                        Selection.TextToColumns Destination:=Range("S1"), DataType:=xlFixedWidth, _
                          FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(12, 1), Array(13, 1), Array(20, 1), _
                          Array(46, 1)), TrailingMinusNumbers:=True
                        Range("S:S,U:U,W:W,X:X").ClearContents
                        Columns("U").Delete
                        End Sub

                        Fai sapere.

                        Ciao,
                        Mario

                        #5830 Score: 0 | Risposta

                        lucas
                        Partecipante

                          Grazie Mario, non vedo problemi sulle celle U4:U5...invece il problema sta tipo nella cella T4 dove 443, dovrebbe essere 0443, poichè questo dato deve essere confrontato con  una colonna che contiene minimo  sempre 4 cifre, 0443, oppure 0044, 0003...correggendo questo potrebbe andare bene, anche se ho visto che piu di 5 cifre non lo estrae e questo potrebbe essere un problema se mi dovesse capitare un codice a 6 cifre..

                           

                          #5837 Score: 0 | Risposta

                          gianfranco55
                          Partecipante
                            91 pts

                            ciao

                            =SE(LUNGHEZZA(DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1)))<4;0&DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1));DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1)))

                            TROVA("00".. è la chiave da cambiare se necessario

                            #5838 Score: 0 | Risposta

                            lucas
                            Partecipante

                              Grazie Gianfranco55, ho provato la funzione ma mi da errore

                              diventa nero qui... {1.2.3.4.5.6.7.8.9}

                              #5839 Score: 1 | Risposta

                              gianfranco55
                              Partecipante
                                91 pts

                                ciao allego il file

                                Allegati:
                                You must be logged in to view attached files.
                                #5851 Score: 0 | Risposta

                                lucas
                                Partecipante

                                  Con gli \ la formula funziona...

                                  #5854 Score: 0 | Risposta

                                  gianfranco55
                                  Partecipante
                                    91 pts

                                    ciao
                                    cambia la formula con

                                    =SE(LUNGHEZZA(DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1)))<4;DESTRA("000"&DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1));4);DESTRA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100);LUNGHEZZA(STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100))-MIN(TROVA({1\2\3\4\5\6\7\8\9};STRINGA.ESTRAI(SINISTRA(B2;LUNGHEZZA(B2)-1);TROVA("00";SINISTRA(B2;LUNGHEZZA(B2)-1);1);100)&{1\2\3\4\5\6\7\8\9})-1)))

                                    sistema se il risultano è inferiore alle tre cifre
                                    prima non lo avevo considerato.

                                    #5856 Score: 2 | Risposta

                                    Luca73
                                    Partecipante
                                      58 pts

                                      Ciao se le stringhe sono tutte simili a quelle proposte secondo me, con formula si potrebbe pensare a qualcosa del genere: con la stringa in A1

                                      =TESTO(DESTRA(SINISTRA(A1;LUNGHEZZA(A1)-1);LUNGHEZZA(A1)-5)*1;"0000")
                                      

                                      elimino l'ultimo carattere con sinistra

                                      elimino i primi 4 caratteri con destra

                                      trasformo in un numero (elimino gli zeri davanti) moltiplicando per 1

                                      con testo e formato "0000" forzo a minimo 4 caratteri

                                      Ciao
                                      Luca

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Estrarre parte di una stringa dopo gli zeri
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: