Condividi:        

[EXCEL] - copia elenco in vari 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

[EXCEL] - copia elenco in vari fogli

Postdi il_perozzi » 22/11/07 17:10

ciao a tutti,
ho una tabella (A1:G300) dove nella colonna "C" ho una serie di nomi inseriti in ordine assolutamente casuale, la domanda è questa: considerando che sono in grado di fare un ordinamento a mio piacere con una semplice macro, vorrei copiare questi nomi (e la relativa intera riga dove il nome è scritto)in tanti fogli quanti sono i nomi da estrarre, come posso fare?
:aaah :aaah

se volete posso anche inviare il file

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Sponsor
 

Postdi Anthony47 » 23/11/07 00:43

Intendi dire che vuoi copiare ognuna delle 300 righe in un foglio separato dello stesso file?
E l’ ordinamento che c’ entra???

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

Postdi il_perozzi » 23/11/07 09:49

no, vorrei fare una specie di scadenzario dove estrarre tutte le righe che hanno la colonna "C" uguale in un altro foglio, mi spiego meglio:
se le righe 1 e 5 hanno in "C" il nome "PIPPO" e le righe 2 e 6 hanno in "C" il nome "PLUTO" e le righe 3 e 4 hanno in "C" il nome "PAPERINO" dovrei creare tre fogli dove nel foglio "1" ci siano solo i nomi PIPPO nel foglio "2" ci siano solo i nomi PLUTO e nel foglio "3" ci siano solo i nomi PAPERINO e così via per tutti i nomi presenti nel foglio principale.
spero di essere stato chiaro, in caso contrario ti posso inviare il file

:oops:

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi Anthony47 » 26/11/07 02:11

Prova questa macro:
Codice: Seleziona tutto
Sub Amen()
LastRow = Range("C65536").End(xlUp).Row
SWs = ActiveSheet.Name
For I = 1 To LastRow
If Range("C1").Offset(I - 1, 0).Value <> PreVal Then
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
NWs = ActiveSheet.Name
Sheets(SWs).Activate
CDest = 0
PreVal = Range("C1").Offset(I - 1, 0).Value
End If
Range("A1").Offset(I - 1, 0).EntireRow.Copy Destination:=Sheets(NWs).Range("A1").Offset(CDest, 0)
CDest = CDest + 1
Next I
End Sub


Non e' granche' ottimizzata (lavora una riga per volta..) ma non credo sia un grave handicap, anche perche' penso che sia un lavoro una tantum.

Va eseguita DOPO aver ordinato l' elenco per col. C; eventualmente inserisci il codice in coda a quello che usi per l' ordinamento.
I nuovi fogli vengono inseriti in coda ai preesistenti.

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

Postdi il_perozzi » 26/11/07 15:27

ciao Anthony,
ti ringrazio per la macro ma mi restituisce errore in:

Destination:=Sheets(NWs).Range("A1").Offset(CDest, 0)

mi dice Errore di sintassi

ho forse sbagliato qualcosa?

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi Anthony47 » 26/11/07 15:52

Humm... strano.
In che momento ti capita l' errore? hai fatto Copia/incolla del codice della macro o hai digitato? Hai inserito altre istruzioni? Che versione di excel e vba usi (da Menu /? /Informazioni su..")?

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

Postdi il_perozzi » 26/11/07 16:29

ho copiato la tua macro e l'ho inserita dopo l'ordinamento crescente per nome come mi hai detto tu, ho fatto un copia incolla del tuo tracciato per cui credo sia da escludere un errore di digitazione ed infine ho la versione 2003 di excel.
da cosa può dipendere?

:x :x :x

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi Anthony47 » 26/11/07 18:26

Uso 2002, ma non ho trovato nulla sull' incompatibilita' con 2003 sulla sintassi dell' argomento Destination.
Mi potrebbe aiutare sapere i che momento capita l' errore; e il messaggio completo che esce fuori; e quale e' la parte evidenziata (solo la parte Destination:= etc etc o tutta la riga?) e in che modo e' evidenziata.

Intanto potresti provare questa istruzione in sostituzione:
Range("A1").Offset(I - 1, 0).EntireRow.Copy Destination:=Sheets(NWs).Cells(CDest + 1, 1)

Come pure provare la sola macro AMEN() non incorporandola in quella dell' ordinamento, ma eseguendola dopo l' ordinamento.
Ma sono sempre ad uso debug.

Ciao.
PS: a volte le faccine dicono cose diverse da quelle che si pensa; o no?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi il_perozzi » 27/11/07 09:50

non capisco,
l'errore avviene in questa riga

Range("A1").Offset(I - 1, 0).EntireRow.Copy Destination:=Sheets(NWs).Cells(CDest + 1, 1)

mi dice errore di run-time '9' indice non incluso nell'intervallo

ho provato anche ad eseguire la macro dopo l'ordinamento come pure inserendola nella mia macro, ma ricevo sempre lo stesso errore, ed ho anche sostituito la tua istruzione, ma niente
cosa sarà?

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi il_perozzi » 27/11/07 09:53

dimenticavo, l'errore è in tutta la riga, sorry

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi Anthony47 » 27/11/07 10:27

Ovviamente "Indice non incluso nell' intervallo" ha un significato diverso da "Errore di sintassi"...
Ancora non mi hai detto quando avviene l' errore:
-appena lanci la macro? (nessun nuovo foglio creato)
-dopo un po'... (quanti nuovi fogli creati? e il loro contenuto "sembra" corretto?)
-alla fine (tutti i nomi traslati nei nuovi fogli)

Sulla base del messaggio di errore fai anche queste prove:
-vai in debug (l' istruzione si evidenzia)
-metti il mouse su queste variabili (no click) e dimmi quale info ti visualizza dopo qualche secondo:
---I, NWs, SWs, CDest

Conferma anche che il nome visualizzato come NWs e' un foglio che esiste.

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

Postdi il_perozzi » 27/11/07 11:02

l'errore avviene appena lancio la macro, non mi crea dunque nessun foglio, mettendo il mouse sulle variabili NWs e CDest mi dice "=vuoto" ed il foglio NWs non esiste (io ho solo foglio1,2,3 e 4).

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma

Postdi Anthony47 » 27/11/07 11:42

Hai in testa alla colonna C delle celle prive di nominativi, vuote...
O le elimini, oppure inserisci in testa alla maco, come prima istruzione (dopo Sub )
Codice: Seleziona tutto
PreVal="zczcxxvbnmqaz"


Dovrebbe essere la volta buona!
Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi il_perozzi » 27/11/07 12:40

finalmente è ok Anthony
con questa modifica riesco ad ottenere l'estrazione dei dati che mi occorrono, ti ringrazio moltissimo.

il_perozzi
Avatar utente
il_perozzi
Utente Junior
 
Post: 95
Iscritto il: 23/05/07 12:28
Località: roma


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] - copia elenco in vari fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti