You are here:Home-Domande su Excel VBA e MACRO-normalizzare numeri di cellulare
normalizzare numeri di cellulare2020-06-05T07:35:36+02:00

Home Forum Domande su Excel VBA e MACRO normalizzare numeri di cellulare

Taggato: 

Visualizzazione 4 filoni di risposte
  • Autore
    Post
    • raimearaimea
      Partecipante
        Post totali: 46

        ciao

        ho una colonna J , che contiene numeri di cellulare

        come al solito sono stati scritti in vari modi

        e vorrei riuscire a normalizzare  tramite macro.

         

        alcune celle contengono dei punti che vanno tolti

        altre anno degli spazi che vanno tolti

         

        poi

        dopo le prime 3 cifre

        vorrei mettere il separatore  –

        quindi avere 335-12345678

         

        via allego il file

        https://www.dropbox.com/s/c5sl0kg5nb49e65/num_telef.rar?dl=0

         

        grazie

      • BySalvBySalv
        Amministratore del forum
          Post totali: 783

          Ciao Angelo, ecco 2 macro, la prima questa, che pulisce e normalizza i tuoi numeri rendendoli xxx-xxxxxxx e va inserita in un modulo VBA, e lanciata una volta sola.

          Sub pulisci()
          Dim r, c, x, d, d1, d2
          
          For x = 3 To Cells(Rows.Count, 10).End(xlUp).Row
              d = Cells(x, 10)
              d = Replace(d, ".", "")
              d = Replace(d, " ", "")
              d = Trim(d)
              d1 = Mid(d, 1, 3)
              d2 = Mid(d, 4)
              Cells(x, 10) = d1 & "-" & d2
          Next x
          End Sub

          la seconda questa che invece non permette di inserire numeri diversi dal formato xxx-xxxxxxx, cioè puoi anche scriverli come ti pare ma quando passi alla cella successiva, ti riporta il formato desiderato.
          Ho previsto spazi, punto, virgola, trattino, underscore, non credo inserirai parentesi
          Questa macro invece va inserita nel modulo del foglio interessato.

          Private Sub Worksheet_Change(ByVal Target As Range)
          Dim r, c, d, d1, d2
          
          If Not Intersect(Target, [j:j]) Is Nothing Then
              r = Target.Row: c = Target.Column: d = Target
              If r < 3 Then Exit Sub
              Application.EnableEvents = False
              d = Replace(d, ".", "")
              d = Replace(d, ",", "")
              d = Replace(d, "-", "")
              d = Replace(d, "_", "")
              d = Replace(d, " ", "")
              d = Trim(d)
              d1 = Mid(d, 1, 3)
              d2 = Mid(d, 4)
              Cells(r, c) = d1 & "-" & d2
              Application.EnableEvents = True
          End If
          
          End Sub

          anche se avresti potuto usare la formattazione celle come da immagine, in questo modo avresti avuto lo stesso risultato

          [/url]

          Ciao By Sal (8-D

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • BySalvBySalv
          Amministratore del forum
            Post totali: 783

            Ciao Angelo, ecco 2 macro, la prima questa, che pulisce e normalizza i tuoi numeri rendendoli xxx-xxxxxxx e va inserita in un modulo VBA, e lanciata una volta sola.

            Sub pulisci()
            Dim r, c, x, d, d1, d2
            
            For x = 3 To Cells(Rows.Count, 10).End(xlUp).Row
                d = Cells(x, 10)
                d = Replace(d, ".", "")
                d = Replace(d, " ", "")
                d = Trim(d)
                d1 = Mid(d, 1, 3)
                d2 = Mid(d, 4)
                Cells(x, 10) = d1 & "-" & d2
            Next x
            End Sub

            la seconda questa che invece non permette di inserire numeri diversi dal formato xxx-xxxxxxx, cioè puoi anche scriverli come ti pare ma quando passi alla cella successiva, ti riporta il formato desiderato.
            Ho previsto spazi, punto, virgola, trattino, underscore, non credo inserirai parentesi
            Questa macro invece va inserita nel modulo del foglio interessato.

            Private Sub Worksheet_Change(ByVal Target As Range)
            Dim r, c, d, d1, d2
            
            If Not Intersect(Target, [j:j]) Is Nothing Then
                r = Target.Row: c = Target.Column: d = Target
                If r < 3 Then Exit Sub
                Application.EnableEvents = False
                d = Replace(d, ".", "")
                d = Replace(d, ",", "")
                d = Replace(d, "-", "")
                d = Replace(d, "_", "")
                d = Replace(d, " ", "")
                d = Trim(d)
                d1 = Mid(d, 1, 3)
                d2 = Mid(d, 4)
                Cells(r, c) = d1 & "-" & d2
                Application.EnableEvents = True
            End If
            
            End Sub

            anche se avresti potuto usare la formattazione celle come da immagine, in questo modo avresti avuto lo stesso risultato

            [/url]

            Ciao By Sal (8-D

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • raimearaimea
            Partecipante
              Post totali: 46

              ciao

              e’ tutto ok

              prima di scrivere ci avevo provato con la format. celle

              ma non ero riuscito

               

              grazie

            • BySalvBySalv
              Amministratore del forum
                Post totali: 783

                Ciao Grazie per la Donazione sempre gradite, Ciao By Sal (8-D

                Ciao By Sal (8-)
                se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            Visualizzazione 4 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.