Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] copiare solo alcune celle dal foglioX al foglioY

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] copiare solo alcune celle dal foglioX al foglioY

Postdi sciclub » 20/03/14 17:20

Ciao e innanzitutto buongiorno a tutti!
Chiedo il vostro aiuto dopo aver cercato (forse male?) una soluzione al problema che ho: ho necessità di copiare solo alcune celle da un elenco che presenta molte celle che contengono solo la parola "Falso".

Sto preparando un file (per lo Sci Club di cui faccio parte) che automatizzi la generazione delle "categorie" degli atleti in base all'elenco degli iscritti inserito sul primo foglio della cartella.

Il formato dei dati inseriti è questo (riporto le intestazioni delle colonne):
A:Cognome(testo) B:Nome(testo) C:Sesso("m" o "f") D:Anno(numeri)

Utilizzando questa funzione:
Codice: Seleziona tutto
=IF(AND(ISCRITTI!$C2=$A$1;AND(ISCRITTI!$D2>=$B$4;ISCRITTI!$D2<=$C$4));ISCRITTI!$A2&" "&ISCRITTI!$B2&" "&ISCRITTI!$D2;"Falso")


sono riuscito a distribuire gli iscritti nelle varie categorie discriminando in base al sesso [cella "A1"] e all'anno (di nascita) [celle "B4" e "C4"), ma visto che uso un "IF" ho dovuto impostare il caso negativo che va a scrivere nelle celle la parola "Falso" (per una più veloce identificazione); questo l'output di una categoria:

Falso
Falso
Bianchi Mario 1996
Falso
Falso
Falso
Rossi Pietro 1995
Falso
Falso
Falso
...
...
...


La funzione gira su un foglio dedicato (dato che il file lo useranno persone poco pratiche con excel (e l'informatica in generale), vorrei evitare che lavorino direttamente sul foglio delle funzioni per non creare "danni accidentali" alle formule). Sempre per evitare danni, vorrei fare in modo che in un terzo foglio vengano riportate solo le celle che soddisfano positivamente la funzione sopra riportata, generando quindi una colonna di questo tipo:

Bianchi Mario 1996
Rossi Pietro 1995
...
...
...

Esiste una funzione (o una macro) già conosciuta per realizzare quanto sopra?

Scusate per l'eccessiva lunghezza del post, ma spero di essere stato abbastanza chiaro per permettermi di aiutarmi ad uscire dall'impasse attuale.

Grazie in anticipo a tutti,
Paolo

P.S.: aggiungo un dettaglio importante, ho a disposizione sia office 2003 sia office 2010 con cui poter lavorare sul file.
sciclub
Newbie
 
Post: 2
Iscritto il: 20/03/14 15:56

Sponsor
 

Re: [Excel] copiare solo alcune celle dal foglioX al foglioY

Postdi Anthony47 » 21/03/14 01:18

Ciao sciclub, benvenuto nel forum.
Mi chiedo se invece non puoi usare il filtro automatico, per selezionare le colonne in base ai parametri di ricerca. Questo lo puoi fare su un foglio "protetto", quindi limitando i danni che e' possibile fare.
Poi copi le righe filtrate su un nuovo foglio per eventuali operazioni successive.

E' compatibile col tuo processo?

Ciao.
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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] copiare solo alcune celle dal foglioX al foglioY

Postdi sciclub » 21/03/14 10:37

Ciao Anthony47,
e grazie mille per la risposta.

Quella che proponi è stata la prima soluzione a cui avevo pensato, ma alla fine l'ho esclusa perché tutti gli iscritti vengono distribuiti in 18 categorie differenti, per cui mi ritrovo con 18 colonne (una per ogni categoria), consecutive una all'altra; tale struttura comporta che i passi da compiere utilizzando i filtri sarebbero questi:
1. applicare un filtro "custom" alla prima colonna escludendo ("does not equal") tutte le celle che contengono "Falso"
2. selezionare e copiare le celle (i nomi) rimasti nella colonna per andare a incollarli su un altro foglio
3. rimuovere il filtro dalla colonna appena copiata
4. ripetere il tutto dal punto 1. al punto 3. passando alla colonna (categoria) sucessiva

Se a usare il file fossi solo io ti direi che va bene così, è una cosa che sono in grado di gestire tranquillamente, ma purtroppo gli utilizzatori finali del file saranno persone che di excel (e informatica in generale) ne capiscono poco e nulla, per cui vedo complessa la sequenza di operazioni da fare per ogni singola colonna.
Per via di ciò vorrei automatizzare questa procedura, di modo che i dirigenti dello sci club riescano a usare il file senza troppi pensieri.

Non avevo pensato alla possibilità di proteggere il singolo foglio, per cui grazie mille per questo spunto che applicherò sicuramente.

Grazie di nuovo per la risposta.

Paolo
sciclub
Newbie
 
Post: 2
Iscritto il: 20/03/14 15:56

Re: [Excel] copiare solo alcune celle dal foglioX al foglioY

Postdi Anthony47 » 21/03/14 19:25

Hummm...
Quindi tu hai nelle stesse colonne dati che si riferiscono a categorie diverse (es riga 1-20 categoria 1; righe 25-40 categoria 2; etc etc), ma hai la necessita' di estrarre dati con dei filtri che imposti tu (dove pero' non ho visto la "Categoria").
Pero' se e' come l' ho detta allora il mio suggerimento e' che rivedi il foglio "Iscritti", aggiungendo una colonna con l' informazione Categoria accanto a ogni nominativo e quindi creando un elenco unico. Da questa "anagrafica" si estrarranno i nomi seguendo i criteri che ti servono: ad esempio puoi fare un foglio di "interrogazioni", in cui l' utente inserisce le chiavi di ricerca in riga 1 e man mano che i campi vengono compilati l' elenco sottostante viene automaticamente compilato (estraendo i dati dal foglio anagrafica).
Ad esempio ho attuato tale ipotesi con questa macro:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long, LastA As Long
'
If Target.Row > 1 Or Target.Column > 5 Then Exit Sub
Target.Select
Range(Range("A3"), Range("E3").End(xlDown)).ClearContents
With Sheets("Anagrafica")
    .Range("A:E").AutoFilter
    LastA = .Cells(Rows.Count, 1).End(xlUp).Row
    For I = 1 To 5
        If Cells(1, I).Value <> "" Then
            .Range("A:E").AutoFilter Field:=I, Criteria1:=(Cells(1, I).Value & "*")
        Else
            .Range("A:E").AutoFilter Field:=I
        End If
    Next I
    .Range("A1:E1").Resize(LastA, 5).Copy _
        Destination:=Range("A2")
End With
End Sub

e ho ottenuto su un foglio di "interrogazioni" un risultato come questo:
Immagine
host image
Il contenuto del foglio "Anagrafica" ovviamente ricalca il layout che vedi nel riepilogo dei dati estratti.

La teoria della macro e' che:
-l' utente indica in riga1 di foglio "Interrogazioni" i filtri che vuole applicare (nell' esempio ha impostato "cognome che comincia con B", ottenendo Bianchi e Blu)
-la macro estrae dal foglio Anagrafica i record che corrispondono e li inserisce da riga 3 in avanti
L' operazione e' dinamica.

La macro va inserita nel "modulo di codice del foglio Interrogazioni:
-tasto dx sut tab col nome foglio, scegli Visualizza codice
-copia il codice e incollalo nel frame vuoto di dx

Torna su Excel, compila il foglio Anagrafica. Poi vai su foglio Interrogazioni; per facilitarsi la vita inserisci le intestazioni di campo in riga 2; compila un campo e vedi l' effetto; cancella / aggiungi campi a piacere.

Fai sapere se questo e' idoneo per quanto devi ottenere.

Ciao
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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] copiare solo alcune celle dal foglioX al foglioY":


Chi c’è in linea

Visitano il forum: ilPrincipito e 12 ospiti