Condividi:        

Excel 2007 Elimina colonne identiche in più fogli

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 14/02/12 19:16

quindi la 15 del foglio1 deve rimanere !

E per l'altra cosa mi dici?

Puoi riprovare con un file nuovo senza nessuna cancellazione fatta dalla macro?
Prova con quello che hai inviato al forum: scaricalo dal forum.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Sponsor
 

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi max2011 » 14/02/12 19:21

max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 14/02/12 22:51

Se puo' aiutare a confondere, prova questo codice:
Codice: Seleziona tutto
Sub DelDup()
Dim I As Integer, J As Integer, KCnt As Long
Dim ICol As Integer, myKey As String
Dim WsInd
'
ICol = 45 'useremo col AS di Sheets("1"=)
'
Set WsInd = ThisWorkbook.Sheets("1")
KCnt = 1
WsInd.Columns(ICol).ClearContents

For I = 1 To ThisWorkbook.Worksheets.Count
    For J = 2 To 38
        myKey = MakeK(I, J)
        If Application.WorksheetFunction.CountIf(WsInd.Cells(1, ICol).Resize(KCnt, 1), myKey) = 0 Then
            WsInd.Cells(KCnt, ICol) = myKey
            KCnt = KCnt + 1
        Else
            Sheets(I).Columns(J).ClearContents
        End If
    Next J
Next I
WsInd.Columns(ICol).ClearContents
WsInd.UsedRange
End Sub

Function MakeK(ByVal SInd, ByVal CCol) As String
Dim I As Integer
myK = "A"
For I = 2 To 38
  myK = myK & Format(Sheets(SInd).Cells(I, CCol).Value, "00")
Next I
MakeK = myK
End Function

E' da inserire in un Modulo di codice (es Modulo1)
Su XL2003 puo' lavorare oltre 1500 fogli.
Usa la colonna AS del foglio "1" per un calcolo di appoggio.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 15/02/12 00:43

Ciao Anthony,
veramente interessante l'idea di unire tutti i dati di una colonna in un vettore e poi utilizzare la funzione CountIf.
in questo modo fai pochissimi cicli e l'elaborazione è molto veloce.

Perchè hai utilizzato ".ClearContents" e non ".Delete?

Forse con ".Delete" qualcosa non quadra ... perchè mi sono ritrovato il "Foglio1" vuoto, ho riprovato e questa volta era il "Foglio20" ad essere vuoto ... è tardi riprovo domani con mente fresca.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 15/02/12 14:36

L' alternativa a ClearContents sarebbe Clear; l' alternativa a Delete potrebbe essere Format C: :D :D

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 15/02/12 14:57

Ciao,
cose fatte di notte ... risate di giorno.

Adesso non cancella tutti i dati ma ... mi segnala uguaglianze che non ci sono ma ... lascio stare e ... preferisco aspettere la risposta di Max lasciando a lui l'onore delle ... prove !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 15/02/12 15:14

In attesa di max2011...
Ricky, se hai voglia, riparti dal file di ahidai, poi togli la riga Sheets(I).Columns(J).ClearContents e sostituiscila col
Codice: Seleziona tutto
Debug.Print "Sheets: " & I
Debug.Print "Column: " & J

A me riporta:
Sheets: 8
Column: 14
Sheets: 14
Column: 38
Sheets: 16
Column: 9

(sono le colonne duplicate)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 15/02/12 15:38

Ciao,
lo avevo già fatto.

Il problema forse l'ho individuato: confermo che utilizzo ".Delete" che era tra i desiderata di Max.
La stranezza ... nasce la seconda volta che si esegue la macro ... approfondisco per sfiziarmi ma ... sul tardi.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 15/02/12 17:53

Tutto sta a capire che cosa intende max2011 per "cancellare"; io l'ho interpretato come "cancellare" alla excel, non rimuovere le celle.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 15/02/12 18:20

Ciao Anthony,
e SI.
Io avevo letto il suo "cancellare la colonna" ed interpretato proprio come "Delete" ...
attendiamo suoi lumi.

BYE BYE
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi max2011 » 15/02/12 23:39

Salve ragazzi e grazie per l'aiuto,
ho risolto con la macro di Anthony che mi ha cancellato 10693 colonne uguali su 504 fogli, il tutto in pochissimi minuti, mentre la macro di Ricky dava qualche problema oltre che su 504 fogli mi si imballava. Allora io per eliminare intendevo cancellare completamente anche le celle, quindi come la macro di Richy ma comunque provando la macro tua Anthony ho risolto perfettamente.
Ringrazio tantissimo tutti e due per l'aiuto e per il lavoro che svolgete.

Salutoni e alla prossima

Ciaooooooooooooooooo :) :) :) :) :) :)
max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi ricky53 » 15/02/12 23:46

Ciao,
grazie a te per il riscontro.

Alla prossima.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 15/02/12 23:53

Hai fatto quindi il Delete della colonna? Guarda che cosi' potresti aver mantenuto dei duplicati...
Dovresti sostituire For J = 2 To 38 con For J = 38 to 2 step -1.
Nota che in questo modo in ogni singolo foglio manterresti la colonna piu' a destra e cancelleresti i duplicati piu' verso sx.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi max2011 » 17/02/12 17:31

Ciao Anthony,

ho eseguito il codice che hai postato

Codice: Seleziona tutto
Sub DelDup()
Dim I As Integer, J As Integer, KCnt As Long
Dim ICol As Integer, myKey As String
Dim WsInd
'
ICol = 45 'useremo col AS di Sheets("1"=)
'
Set WsInd = ThisWorkbook.Sheets("1")
KCnt = 1
WsInd.Columns(ICol).ClearContents

For I = 1 To ThisWorkbook.Worksheets.Count
    For J = 2 To 38
        myKey = MakeK(I, J)
        If Application.WorksheetFunction.CountIf(WsInd.Cells(1, ICol).Resize(KCnt, 1), myKey) = 0 Then
            WsInd.Cells(KCnt, ICol) = myKey
            KCnt = KCnt + 1
        Else
            Sheets(I).Columns(J).ClearContents
        End If
    Next J
Next I
WsInd.Columns(ICol).ClearContents
WsInd.UsedRange
End Sub



Codice: Seleziona tutto
Function MakeK(ByVal SInd, ByVal CCol) As String
Dim I As Integer
myK = "A"
For I = 2 To 38
  myK = myK & Format(Sheets(SInd).Cells(I, CCol).Value, "00")
Next I
MakeK = myK
End Function

Ho anche fatto la sostituzione For J = 2 To 38 con For J = 38 to 2 step -1 e mi da lo stesso risultato.

Grazie ancora di tutto

Ciaooooooooooooooooo :) :) :) :)

EDIT Flash ore 23:53
max2011
Utente Junior
 
Post: 59
Iscritto il: 03/11/11 16:34

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Flash30005 » 17/02/12 23:52

Ciao Max2011

Ho corretto il tuo post perché i codici delle macro vanno inseriti nel Tag Code
che trovi nell'editor dei post (apposito comando "Code")
che crea questo visibile ne'editor:
[code ] qui va inserito il codice[/code ]
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2007 Elimina colonne identiche in più fogli

Postdi Anthony47 » 18/02/12 00:04

Vedi memo di Flash sull' uso dei tag (sopra).

Ok, non avendo usato "Delete" (hai mantenuto il ClearContents) delle colonne duplicate lavorare da sx a dx oppure da dx a sx e' equivalente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Excel 2007 Elimina colonne identiche in più fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 119 ospiti