Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Generare un elenco da elenchi su fogli multipli

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] Generare un elenco da elenchi su fogli multipli

Postdi Ruben » 05/01/09 17:01

Salve a tutt*,
sono nuovo. :-)

Premetto che il fogli excel mi serve per un gioco, quindi non c'è alcuna urgenza, tuttavia credo che il mio problema sia piuttosto "originale" visto che in Internet non trovo nulla di simile al caso che sto per illustrare.

Sto facendo una cartella excel (mia versione: 2000), per gestire le presenze mensili di un gruppo di persone, e calcolare lo stipendio per ognuna.
Questo per me è facile, e ho creato un primo foglio che svolge quanto richiesto egregiamente.
In una tabella ho il nome della persona, il livello di salario da pagare, il numero di presenze mensili. Se le presenze mensili sono uguali o superiori al minimo richiesto, la somma da pagargli viene mostrata.

Ora, nella stessa cartella, ho un foglio chiamato "Dicembre", un altro "Gennaio", un altro "Febbraio"...
Di mese in mese l'elenco delle persone può variare in due modi: o una persona abbandona il gioco e se ne va, oppure può succedere che una persona viene promossa e quindi passa a un livello di salario superiore.
Ne deriva che l'elenco dei nomi di persone e relative informazioni può cambiare di mese in mese.

Nel mio problema limitiamoci però solo ai nomi delle persone, senza tenere conto delle altre variazioni possibili.
Quello che vorrei ottenere è creare un altro foglio chiamato "Riassunto", che contenga un elenco completo di tutti i nomi di persona, elenco univoco, prelevati dai vari altri fogli della cartella.

Ho provato con Consolida dati, e non me lo fa. Ho provato con Tabella Pivot con inserimenti multipli, e non me lo fa.
Raggruppa non è quello che voglio ottenere. Eppure, anche se la mia conoscenza di excel è limitata, sono sicuro che c'è un modo per farlo, ma non riesco a capire quale. Forse con il VBA?

Dopo la premessa generale, vi spiego in dettaglio (certo, sarebbe carino poter allegare il file...):
1) Voglio ottenere che il foglio "Riassunto" generi un elenco di tutti i nomi in ordine alfabetico (1 ricorrenza per nome) sulla prima colonna, in modo che nelle colonne a seguire io possa far visualizzare il numero di presenze per ogni mese. Qundi, la colonna A sarà "Nome", B = "Gennaio", C = "Febbraio", eccetera. All'incrocio tra il nome della persona e il mese metterò un Cerca.verticale per andare a pescare l'informazione voluta.
2) Un problema è che la cartella non parte già con 12 fogli, uno per ogni mese, ma il foglio di Marzo sarà copiato e messo dopo quello di Febbraio. Invece, il foglio Riassunto sarà già presente.
3) Per il punto 2), l'elenco di nomi nel foglio "Riassunto" potrà man mano diventare più lungo ad ogni aggiornamento.
4) Ogni foglio con il nome del mese (Gennaio, Febbraio, Marzo...) ha una denominazione di range Persone sulle celle dei nomi di persone. Il nome del range è sempre uguale, visto che ogni foglio mensile viene semplicemente copiato con l'opzione clic-destro sulla linguetta del foglio.
Ho verificato che questo non comporta errori: se sono nel foglio Gennaio e dal menu a tendina scelgo il nome Persone, lui mi fa vedere solo quello di Gennaio. Stessa cosa succede con gli altri fogli.

Spero di essere stato chiaro. In caso contrario, posso mandare il file e dare ulteriori spiegazioni.
Grazie in anticipo per la collaborazione,
Ruben
Ruben
Newbie
 
Post: 4
Iscritto il: 05/01/09 16:36

Sponsor
 

Re: [Excel] Generare un elenco da elenchi su fogli multipli

Postdi Anthony47 » 06/01/09 19:36

Ciao Ruben e benvenuto nel forum
Vista la complessita' di quanto richiedi penso che, indipendentemente da quanto affermi, la tua competenza sia gia' buona, quindi mi limito a degli spunti.
Io farei un modello dei dati mensili, dove i nominativi esistenti sono compresi in un intervallo a cui associ il nome "Elenco" (Selezioni l' elenco, Menu /Inserisci /Nomi Definisci; scrivi Elenco come nome, poi Ok); fai cominciare l' elenco con "Primo-Nominativo" e fallo chiudere con "Ultimo-Nominativo", anche loro compresi nell' intervallo nominato "Elenco". Per inserire nomi, farai Inserisci /Riga in qualche posto tra tra Primo-Nominativo e Ultimo-Nominativo, allungando cosi' l' intervallo Elenco.
Poi copia questo foglio come Gennaio; a fine Gennaio copierai Gennaio come Febbraio posizionando questo nuovo foglio subito dopo il mese precedente; e cosi' via. Oppure a inizio anno generi direttamente i 12 fogli mensili.
Subito prima di Gennaio inserisci il foglio Riepilogo (cioe' il tab col nome Riepilogo sara' all' immediata sx del tab Gennaio, a dx di Gennaio ci sara' Febbraio, etc)
In Riepilogo ti fai una colonna transitoria, diciamo la Z, in cui copi da ogni foglio gli elenchi dei nomi, prima crearne una copia ordinata di nomi "unici" nella tua tabella di riepilogo.
Per questo userai la seguente macro:
Codice: Seleziona tutto
Sub Ruben()
Sheets("Riepilogo").Select
Range("Z:Z").Clearcontents
Range("Z1").text = "Nomi"
For I = ActiveSheet.Index + 1 To Sheets.Count
Sheets(I).Range("Elenco").Copy Destination:=Cells(Rows.Count, 26).End(xlUp).Offset(1, 0)
Next I
'altro codice
'altro codice
End Sub


Le righe marcate "altro codice" le sostituirai col codice ottenuto registrando una macro mentre:
-selezioni nella tabella di destinazione tutta la colonna con i nomi e cancelli il contenuto
-selezioni la colonna Z
-attivi Filtro avanzato
-su Filtro avanzato spunti "Copia univoca" e "Copia in altra posizione";
-come destinazione (Copia in) segni l' indirizzo dell' elenco dei nomi nella tua tabella.
-Ok

Quando vorrai, potrai ricostruire l' elenco aggiornato dei nomi lanciando la macro Ruben.

Mi raccomando le solite due copie di backup prima di qualsiasi prova.

Ciao, fai sapere dove arrivi con questi spunti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Generare un elenco da elenchi su fogli multipli

Postdi Ruben » 07/01/09 18:38

Ciao Anthony,

wow, il tuo spunto è effettivamente buono. Ho avuto un po' di problemi con la tua macro, ma sono riuscito a risolvere.
Il problema era la riga Range("Z1").text = "Nomi", che ora è diventata:
Range("Z1").Select
ActiveCell.FormulaR1C1 = "Nomi"

Poi, ho dovuto cancellare i riferimenti alle righe in
Range("Z:Z").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( _
"A1:A47"), Unique:=True
facendolo diventare
Range("Z:Z").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns( _
"A:A"), Unique:=True
perché registrando la macro metteva ovviamente da solo quante righe trovava.

Non ho avuto problemi nell'aggiungere l'altro codice, e quindi il problema di come generare un unico elenco è effettivamente risolto. Registrando poi una macro per ordinare i dati completa il mio bisogno.
Quindi, grazie veramente, il tuo spunto è stato risolutivo.
Ora però, ho scoperto che cerca.vert non fa al caso mio... troverò una soluzione quanto prima.

Quando ho terminato, metterò a disposizione il file: infatti, solo ora mi accorgo che posso allegare i file al mio post, se clicco sul tab "Invia allegato" :-)

Grazie ancora e a risentirci presto.
Ruben
Ruben
Newbie
 
Post: 4
Iscritto il: 05/01/09 16:36


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Generare un elenco da elenchi su fogli multipli":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti

cron