Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro Trim Finale

Ultimo Aggiornamento: 08/07/2020 17:29
Post: 293
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
07/07/2020 18:09

Buona sera uso questa macro sotto da anni ma ora non va più perché
non mi va mai bene niente nel 2020.Ho inserito nel foglio1 il mio file iniziale e nel foglio2 i risultati di come dovrebbe essere il riscontro.In pratica devo annulare spazi iniziali e finali di tutto il foglio. Grazie Matteo







Sub Macro2()
Dim x As Long
x = Range("C63556").End(xlUp).Row
For i = 1 To x
Cells(i, 2) = Application.Clean(Application.Trim(Cells(i, 2)))
Next

On Error Resume Next
Columns(2).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart

Cells.Select
End Sub
Post: 952
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
07/07/2020 19:01

Nella macro che hai allegato ti manca completamente il ciclo nel verso orizzontale. Così com'è ti ripulisce riga per riga solo la colonna B (vedi: Cells(i, 2) ).

Per quanto riguarda la prima parte della macro potresti modificarla così:
Option Explicit

Sub Pulizia_Spazi_Celle()

    Dim x      As Long
    Dim area   As Range
    Dim cella  As Range

    x = Range("C" & Rows.Count).End(xlUp).Row  'rileva l'ultima cella in colonna C
    Set area = Range("A1:G" & x)   'definisci l'area da controllare
    For Each cella In area    'cicla tutte le celle
        If cella <> "" Then   'escluse quelle vuote
            Range(cella.Address) = Application.Clean(Application.Trim(cella))
        End If
    Next cella

End Sub
mentre per la seconda parte puoi aggiungere:
area.Replace Chr(160), "", xlPart   'cerca nell'area il chr(160) e sostituiscilo
area.Replace Chr(32), "", xlPart
mettendoci pure il CHR(32) che capita spesso di trovare.
[Modificato da rollis13 07/07/2020 20:01]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 293
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
07/07/2020 20:18

Ciao e buona serata Rollis13, non mi sono accorto che la mia macro mi ripuliva riga per riga solo la colonna B,mi è sfuggito,allego ancora il foglio ho messo la tua macro ho cambiato il nome di questa e il Range ho aggiunto la colonna H,poteva già bastare qui hai risolto ti ringrazio ma mi puoi spiegare con un esempio quando scrivi per la seconda parte puoi aggiungere:
area.Replace Chr(160), "", xlPart 'cerca nell'area il chr(160) e sostituiscilo
area.Replace Chr(32), "", xlPart
non riesco a capire questo passaggio. Grazie e buona serata Matteo
Post: 953
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
07/07/2020 22:03

Subito sotto la riga:
    Next cella
inserisci almeno la riga che riguarda il CHR(160). In pratica questa riga sostituisce quella che hai utilizzato nella macro esempio (post #1) che però agiva solo sulla colonna B (vedi: Columns(2) ).
Quella che riguarda il CHR(32) è un extra, potrebbe non servirti, tutto dipende da cosa si trova nel testo da ripulire.
[Modificato da rollis13 07/07/2020 22:15]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 294
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
08/07/2020 08:50

Buon giorno Rollis ho avuto ancora problemi solo di spazi finali. Grazie a te ho capito però l'errore della mia macro
ho risolto così .
Sub TrimFinale()
Dim x As Long
x = Range("C63556").End(xlUp).Row
For i = 1 To x
Cells(i, 2) = Application.Clean(Application.Trim(Cells(i, 2)))
Next

On Error Resume Next
Columns(2).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Columns(3).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Columns(4).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Columns(5).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart




Cells.Select
End Sub
Solo per curiosità se vuoi aggiustare la tua macro non devi però cancellarmi gli spazi in mezzo.
Con la macro sotto ho ancora degli spazi finali.

Sub Pulizia_Spazi_Celle()

Dim x As Long
Dim area As Range
Dim cella As Range

x = Range("C" & Rows.Count).End(xlUp).Row 'rileva l'ultima cella in colonna C
Set area = Range("A1:G" & x) 'definisci l'area da controllare
For Each cella In area 'cicla tutte le celle
If cella <> "" Then 'escluse quelle vuote
Range(cella.Address) = Application.Clean(Application.Trim(cella))
End If
Next cella
area.Replace Chr(160), "", xlPart
End Sub



Con questa macro
Sub Pulizia_Spazi_Celle()

Dim x As Long
Dim area As Range
Dim cella As Range

x = Range("C" & Rows.Count).End(xlUp).Row 'rileva l'ultima cella in colonna C
Set area = Range("A1:G" & x) 'definisci l'area da controllare
For Each cella In area 'cicla tutte le celle
If cella <> "" Then 'escluse quelle vuote
Range(cella.Address) = Application.Clean(Application.Trim(cella))
End If
Next cella
area.Replace Chr(160), "", xlPart 'cerca nell'area il chr(160) e sostituiscilo
area.Replace Chr(32), "", xlPart
End Sub
cioè aggiungendo area.Replace Chr(32), "", xlPart
ho risolto sia spazi iniziali che finali ma mi si cancellano anche gli spazi in mezzo ma questo per me non va bene.
Comunque ho risolto e ti ringrazio lo stesso questa è solo una curiosità.

Ciao e grazie Matteo





Post: 954
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
08/07/2020 16:26

- La funzione .CLEAN elimina caratteri non stampabili che vanno da CHR(0) a CHR(31).
- La funzione .TRIM ti toglie tutti gli spazi prima e dopo e riduce ad 1 quelli intermedi.
- CHR(32) corrisponde a 'Spazio' pertanto se ti servono gli spazi intermedi la sua riga .REPLACE non la devi usare.
- Poi con il .REPLACE vai a eliminare eventuali caratteri CHR(160), che corrisponde ad uno 'Spazio unificatore', sostituendolo con 'Nulla' dato che non viene eliminato da .TRIM.
Questo è quanto.

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 295
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Junior
2003
OFFLINE
08/07/2020 17:29

Ti ringrazio Rollis13 delle spiegazioni.Saluti Matteo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
unire 2 macro (4 messaggi, agg.: 25/11/2016 20:35)
Unire pi file (1 messaggio, agg.: 31/07/2017 13:13)
collegare due file (2 messaggi, agg.: 05/08/2022 07:21)
Riattivazione Macro (4 messaggi, agg.: 02/09/2022 13:31)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:48. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com