Risultati da 1 a 10 di 10

Discussione: Annulla spazi col vba



  1. #1

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7121
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298

    Annulla spazi col vba

    Ciao a tutti,
    oggi ho fatto un lavoro su una cartella excel per un mio amico e tra le cose che c'erano da fare ho dovuto annullare gli spazi di centinaia di stringhe anteposte, in mezzo e dopo i nomi.
    Ho estrapolato il codice che ho usato e lo pubblico qui, nel caso possa tornare utile a qualcuno.
    Codice: 
    
    Option Explicit
    Sub annulla_spazi()
        Dim wks As Worksheet
        Dim y As Integer
        Set wks = Worksheets("Foglio1")
        Application.ScreenUpdating = False
        With wks
            For y = 1 To 100
                wks.Range("A" & y) = Trim(wks.Range("A" & y))
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "     ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "    ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "   ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "  ", " ")
            Next
        End With
        Set wks = Nothing
        Application.ScreenUpdating = True
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  2. I seguenti 2 utenti hanno dato un "Like" a ges per questo post:


  3. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3338
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao a tutti,
    oggi ho fatto un lavoro su una cartella excel per un mio amico e tra le cose che c'erano da fare ho dovuto annullare gli spazi di centinaia di stringhe anteposte, in mezzo e dopo i nomi.
    Ho estrapolato il codice che ho usato e lo pubblico qui, nel caso possa tornare utile a qualcuno.
    Codice: 
    
    Option Explicit
    Sub annulla_spazi()
        Dim wks As Worksheet
        Dim y As Integer
        Set wks = Worksheets("Foglio1")
        Application.ScreenUpdating = False
        With wks
            For y = 1 To 100
                wks.Range("A" & y) = Trim(wks.Range("A" & y))
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "     ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "    ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "   ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "  ", " ")
            Next
        End With
        Set wks = Nothing
        Application.ScreenUpdating = True
    End Sub
    Forse sono un po' tarello ma mi spieghi il comportamento dei vari replace?
    perchè fai un replace di 5 spazi con 1 spazio poi 4 poi 3 poi 2 ed invece di spazi ne tira via di più in particolare il primo ?

    tks

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  4. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7121
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298
    Ciao Baloon,
    ho usato questo sistema perchè gli spazi interni tra i due nomi erano di lunghezza differente, alcuni 10 - 15 spazi altri solo 2 o 5, insomma molto diversificati, con questo metodo ho fatto in modo con un solo click di toglierli tutti.
    Se lasciavo solo l'ultimo Replace me li toglieva lo stesso ma avrei dovuto avviare il ciclo For con diversi click.
    E' il metodo che mi è venuto in mente al momento, forse pensandoci meglio avrei potuto creare una variabile da decrementare o incrementare che faceva lo stesso lavoro utilizzando una sola riga.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  5. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3338
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Baloon,
    ho usato questo sistema perchè gli spazi interni tra i due nomi erano di lunghezza differente, alcuni 10 - 15 spazi altri solo 2 o 5, insomma molto diversificati, con questo metodo ho fatto in modo con un solo click di toglierli tutti.
    Se lasciavo solo l'ultimo Replace me li toglieva lo stesso ma avrei dovuto avviare il ciclo For con diversi click.
    E' il metodo che mi è venuto in mente al momento, forse pensandoci meglio avrei potuto creare una variabile da decrementare o incrementare che faceva lo stesso lavoro utilizzando una sola riga.
    Forse non mi sono spiegato.
    prendiamo il caso della riga A1 Rossi Mario
    i primi caratteri li togli col trim....
    tra rossi e mario ci sono n spazi (mettiamo che sono 20) con il replace tu togli prima 5 spazi e ne aggiungi 1 a seguire 4 e 1, 3 e 1, 2 e 1
    ma quello che non capisco al di là della variabile o meno come fa a togliere 20 spazi quando tu da replace ne togli 5,4,3,2

    Spero di essermi spiegato. In pratica non conosco questo metodo e sto cercando di capirlo.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  6. #5
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3338
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    OK ci sono arrivato scusa ma forse è anche un po' l'orario ad una certa età non bisogna più fare le "orine" :243:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  7. #6

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7121
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    OK ci sono arrivato scusa ma forse è anche un po' l'orario ad una certa età non bisogna più fare le "orine" :243:
    Mi stavi facendo sentire ultra...rinco :243::167: ... non riuscivo a capire cosa volevi dire!
    Bene ... ora che mi sono ripreso un po' di autostima posso andare a dormire più tranquillo :271:, buonanotte! :43:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  8. #7
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3338
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Mi stavi facendo sentire ultra...rinco :243::167: ... non riuscivo a capire cosa volevi dire!
    Bene ... ora che mi sono ripreso un po' di autostima posso andare a dormire più tranquillo :271:, buonanotte! :43:
    buonanotte a te :246:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  9. #8
    L'avatar di Giuseppe Zammuto
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Montebello Vicentino
    Età
    64
    Messaggi
    69
    Versione Office
    Office 2013
    Likes ricevuti
    1
    Grazie :286:

  10. #9

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Ciao ges,

    un'osservazione: usare il costrutto With e poi non sfruttarlo non è una buona scelta :176:
    Codice: 
    ..CUT
        With wks
            For y = 1 To 100
                wks.Range("A" & y) = Trim(wks.Range("A" & y))
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "     ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "    ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "   ", " ")
                wks.Range("A" & y) = Replace(wks.Range("A" & y), "  ", " ")
    ...CUT
    Ed un contributo: ho modificato il tuo codice per renderlo più flessibile eliminando il limite al numero di spazi multipli:

    Codice: 
    Sub annulla_spazi()
    
    
        Dim wks As Worksheet
        Dim y As Long
    
        Set wks = Worksheets("Foglio1")
        Application.ScreenUpdating = False
        For y = 1 To 100
          With wks.Range("A" & y)
            .Value = Trim(.Value)
            Do While InStr(1, .Value, "  ") > 0
              .Value = Replace(.Value, "  ", " ")
            Loop
          End With
        Next
        Set wks = Nothing
        Application.ScreenUpdating = True
    
    
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  11. I seguenti 2 utenti hanno dato un "Like" a scossa per questo post:


  12. #10

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7121
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298
    Ciao scossa,
    grazie per la sistemazione del codice! :90:
    Il costrutto whit mi è sfuggito di usarlo poiché come ho scritto sopra ho estrapolato questa parte di formula da un mio progetto più ampio e nel copiarla mi è sfuggito wks.Range..... invece che .Range...
    Il resto per come lo hai ricavato non avevo pensato, grazie per la dritta! :286:

    P.S. - E' sempre un piacere leggere le tue soluzioni! :97:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

Discussioni Simili

  1. [Risolto] Rimozione spazi
    Di ama1990 nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 14/12/16, 18:13
  2. Risposte: 5
    Ultimo Messaggio: 28/11/16, 08:53
  3. Testo WORD - Piu spazi tra le parole
    Di tk71 nel forum Domande sul Microsoft Word
    Risposte: 4
    Ultimo Messaggio: 03/03/16, 23:34
  4. Inserimento dinamico di spazi
    Di Nazareno Golinelli nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 18/10/15, 11:15
  5. Annulla spazi vuoti
    Di nick0573 nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 20/07/15, 18:06

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •