Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Copiare da una cella solo se...

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 da una cella solo se...

Postdi dova4ever » 31/10/11 00:29

Ciao a tutti, ho un problema che probabilmente per voisarà di facile soluzione ma io ci sbatto la testa da un po'.
ho creato un file con i tempi che fanno i miei allievi su determinate distanze ed è strutturato su tre colonne:
Colonna A: nome allievo
Colonna B: tempo
Colonna C: data
Nello stesso file ci sono i fogli di lavoro dedicati ad ogni allievo; è possibile fare in modo che excel copi automaticamente la data e il tempo fatto nella prima cella libera in una data colonna del foglio relativo all'allievo giusto? Forse con un esempio mi spiego meglio:
[foglio generale] cella A1 Pinco Pallino;
cella B1 10"95;
cella C1 05-09-2011
vorrei che trascrivesse il contenuto delle celle B1 e C1 nelle prime celle libere delle colonne A e B del foglio di lavoro [Pinco Pallino] e che fosse in grado di fare lo stesso con tutti gli altri allievi.
Praticamente dovrebbe copiare nel foglio [Pinco Pallino] se nella colonna a del foglio [generale] c'è quel nome, nel foglio [Caio] se c'è Caio nel foglio [generale] e così via.
Spero di essere stato chiaro e che possiate aiutarmi!
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Sponsor
 

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 31/10/11 06:13

Ciao Dova4ever e benvenuto nel Forum

Puoi utilizzare questa macro
Avviare solo CancellaF

Codice: Seleziona tutto
Sub CancellaF()
For FF = 1 To Worksheets.Count
If Sheets(FF).Name <> "Generale" Then
Foglio = Sheets(FF).Name
URF = Worksheets(Foglio).Range("A" & Rows.Count).End(xlUp).Row
Worksheets(Foglio).Range("A2:B" & URF).ClearContents
End If
Next FF
Call CompAllievi
End Sub
Sub CompAllievi()
Set Ws1 = Worksheets("Generale")
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
Foglio = Ws1.Range("A" & RR1).Value
URF = Worksheets(Foglio).Range("A" & Rows.Count).End(xlUp).Row + 1
If URF < 2 Then URF = 2
Ws1.Range("B" & RR1 & ":C" & RR1).Copy Destination:=Worksheets(Foglio).Range("A" & URF)
Next RR1
End Sub


Tenendo presente che la prima riga l'ho considerata come testata
Nel foglio generale
A1 = Allievo
B1 = Tempo
C1 = Data

In tutti gli altri fogli
A1 = Tempo
B1 = Data

Ti invio questo file esempio
Con pulsante di comando

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi Anthony47 » 31/10/11 19:51

Ciao dova4ever, benvenuto anche da parte mia.
Guarda la risposta di Flash sopra.
Ma e' mia opinione che sia contro natura smembrare i dati, essi vanno tenuti quanto piu' possibile uniti. Se spieghi l' obiettivo finale potrei magari suggerire un approccio a mio parere piu' ortodosso.

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

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 31/10/11 21:11

Ciao Flash30005, grazie mille! Ora scarico il file e cerco di capire il funzionamento della macro e il modo in cui l'hai creata!!!
Grazie ancora

[quote="Flash30005"]Ciao Dova4ever e benvenuto nel Forum

Puoi utilizzare questa macro
Avviare solo CancellaF
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 31/10/11 21:14

Ciao Anthony47, in linea di massima il tuo commento sull'unità dei dati è corretto però in questo caso mi è necessario smembrarli perché gli allievi che alleno, parlando solo del gruppo agonistico, sono una trentina e per praticità di gestione registro i tempi che fanno nelle varie attività tutti in file diversi per tipologia di allenamento ma con un unico foglio per tutti gli atleti. Siccome però a stagione in corso mi è necessario avere una panoramica dell'andamento cronologico delle loro prestazioni, mi è utile separarli in fogli diversi per ciascun atleta per poio analizzare singolarmente i dati e preparare delle schede personali.

ciao ciao

Anthony47 ha scritto:Ciao dova4ever, benvenuto anche da parte mia.
Guarda la risposta di Flash sopra.
Ma e' mia opinione che sia contro natura smembrare i dati, essi vanno tenuti quanto piu' possibile uniti. Se spieghi l' obiettivo finale potrei magari suggerire un approccio a mio parere piu' ortodosso.

Ciao a tutti.
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 01/11/11 00:26

Ciao Flash30005, il file che mi hai inviato fa esattamente quello che desidero ottenere; purtroppo la mia scarsissima conoscenza (quasi nulla, per la verità) delle macro e del loro funzionamento non mi consente di capire come l'hai creata e di modificarla perché sia completamente rispondente a quanto mi serve:
in realtà le attività che vanno nel primo foglio sono 22, ognuna con i dati su 3 colonne come nell'esempio separati da una vuota (la prima nelle colonne da A a C, la seconda da E a G, ecc.) e le righe di intestazione sono due;
di conseguenza nei singoli fogli ci sarà la stessa quantità di attività ma i tempi riportati partono dalla colonna E perché prima metto per ogni attività il miglior tempo e la media (quindi: colonna A attività, colonna B miglior tempo, colonna C media) e una colonna vuota (la D).
Come posso modificare la macro?
Spero che sia l'ultima volta che disturbo per questo motivo!!!

Ciao a tutti
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 01/11/11 08:49

Sarebbe più opportuno inviare il file o uno screenshot (foto videata)
per capire quale sia lo schema effettivo dei dati
sperando di aver interpretato bene quanto da te esposto invio la macro modificata

Codice: Seleziona tutto
Sub CancellaF()
For FF = 1 To Worksheets.Count
If Sheets(FF).Name <> "Generale" Then
Foglio = Sheets(FF).Name
URF = Worksheets(Foglio).Range("E" & Rows.Count).End(xlUp).Row + 2
Worksheets(Foglio).Range("E3:J" & URF).ClearContents
End If
Next FF
Call CompAllievi
End Sub
Sub CompAllievi()
Set Ws1 = Worksheets("Generale")
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 3 To UR1
Foglio = Ws1.Range("A" & RR1).Value
URF = Worksheets(Foglio).Range("E" & Rows.Count).End(xlUp).Row + 1
If URF < 3 Then URF = 3
Ws1.Range("B" & RR1 & ":G" & RR1).Copy Destination:=Worksheets(Foglio).Range("E" & URF)
Next RR1
End Sub


Seleziona tutto il codice qui riportato con apposito comando e copialo
da qualsiasi foglio di excel (del file inviato) premi ALT+F11
e troverai il codice precedente che selezionerai interamente e sostituirai incollando quanto copiato
Chiudi il VBA e premendo il pulsante di comando sul foglio Generale dovresti ottenere quanto richiesto

In caso di problemi posta ancora

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 01/11/11 20:37

Ciao Flash30005, la macro che mi hai inviato funziona ma solo in parte.
Ti invio l'indirizzo di uploading.com in cui ho caricato il file con una bozza del lavoro definitivo: è preparato su sole tre prove ma il principio è quello.
Ciao e grazie mille ancora per l'aiuto

http://uploading.com/files/c4216c16/Com ... %2529.xls/
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 01/11/11 22:53

Beh scusami ma il file che hai inviato non è coerente con ciò che la specifica fornita dal tuo primo post e nemmeno con la correzione fatta (dopo che ti sarai reso conto che forse non era suffciente lo spunto)
In pratica hai voluto semplificare il problema pensando di proseguire da solo
ho realizzato quanto richiesto nel primo post
hai aggiustato il tiro fornendo altre specifiche
ho provato ad interpretare ma, come pensavo, non avrebbe soddisfatto la richiesta.
Ora ho finalmente il file effettivo e mi rendo conto che tutto ciò fatto finora non è servito a nulla in quanto deve essere studiata e realizzata una macro ex-novo che soddisfi questa nuova esigenza che analizzando bene ancora non è chiara in quanto vorrei sapere nel caso in cui si aggiungano altre fare 100m dove devono essere scritte?
I fogli allievi sono vuoti e non si capisce la media come la ricavi se in riga o in colonna
La cosa che odio è perdere tempo, pertanto non penso di impiegarlo per capire come hai inteznione di realizzare questa distribuzione di dati

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 02/11/11 12:01

Beh, il motivo per cui all'inizio avevo parlato di una sola attività era perché, forse per presunzione, pensavo di potere comprendere la macro ed eventualmente modificarla successivamente in base alla necessità. Al posto della bozza ti allego ora il file reale con i fogli degli allievi già preparati; se comunque pensi che sia una perdita di tempo lascia perdere perché non volevo far perdere tempo a nessuno ma solo vedere se fosse possibile fare qualcosa che io non so fare.
Eventualmente farò una serie di files singoli in modo da potere usare la macro che mi hai gentilmente inviato per prima!!!

http://uploading.com/files/a58f122c/Rac ... 11-12.xls/

Flash30005 ha scritto:Beh scusami ma il file che hai inviato non è coerente con ciò che la specifica fornita dal tuo primo post e nemmeno con la correzione fatta (dopo che ti sarai reso conto che forse non era suffciente lo spunto)
In pratica hai voluto semplificare il problema pensando di proseguire da solo
ho realizzato quanto richiesto nel primo post
hai aggiustato il tiro fornendo altre specifiche
ho provato ad interpretare ma, come pensavo, non avrebbe soddisfatto la richiesta.
Ora ho finalmente il file effettivo e mi rendo conto che tutto ciò fatto finora non è servito a nulla in quanto deve essere studiata e realizzata una macro ex-novo che soddisfi questa nuova esigenza che analizzando bene ancora non è chiara in quanto vorrei sapere nel caso in cui si aggiungano altre fare 100m dove devono essere scritte?
I fogli allievi sono vuoti e non si capisce la media come la ricavi se in riga o in colonna
La cosa che odio è perdere tempo, pertanto non penso di impiegarlo per capire come hai inteznione di realizzare questa distribuzione di dati

ciao
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 03/11/11 03:27

Beh non mi dire che i tuoi esempi precedenti rispecchiano il foglio attuale
Quindi hai fatto bene a postare il vero foglio perché altrimenti avremmo riveduto più volte la macro

Questa macro dovrebbe soddisfare l'esigenza
(Controlla la formula calcolo Best e Media dei 7 giri perché credo sia errata su tutti i fogli)

Codice: Seleziona tutto
Sub CancellaF()
For FF = 1 To Worksheets.Count
If Sheets(FF).Name <> "Generale" Then
Foglio = Sheets(FF).Name
Worksheets(Foglio).Range("F4:CA500").ClearContents
End If
Next FF
Call CompAllievi
End Sub
Sub CompAllievi()
Set Ws1 = Worksheets("Generale")
RidC = 6
For CC1 = 1 To 95 Step 4
RidC = RidC - 1
UR1 = Ws1.Cells(Rows.Count, CC1).End(xlUp).Row
    For RR1 = 4 To UR1
        Foglio = Ws1.Cells(RR1, CC1).Value
        URF = Worksheets(Foglio).Cells(Rows.Count, CC1 + RidC).End(xlUp).Row + 1
        If URF < 3 Then URF = 3
        Ws1.Range(Cells(RR1, CC1 + 1), Ws1.Cells(RR1, CC1 + 2)).Copy Destination:=Worksheets(Foglio).Cells(URF, CC1 + RidC)
    Next RR1
Next CC1
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 05/11/11 10:54

Ciao Flash30005, ti ringrazio per l'ultima macro che mi hai inviato: funziona perfettamente ed è proprio quello che mi serviva!
Scusami ancora per averti fatto perdere del tempo!!!

Ciao

P.S. Avevi,ovviamente, ragione sull'errore nei 7giri: grazie per avermelo fatto notare!
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 10/11/11 10:19

Ciao Flash, ti invio il link al file con la macro che mi hai preparato perché è sorto un problema:
ho aggiunto un nuovo foglio "VL" perché abbiamo un nuovo allievo e la macro si blocca; non so se il problema sia questo o la quantità di dati. Potresti dargli un'occhiata?

Grazie mille

http://uploading.com/files/cc475c7c/Rac ... 11-12.xls/
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 10/11/11 11:18

Il foglio aggiunto non c'entra nulla!
L'errore è dovuto al fatto che non esiste il foglio "FC" che invece sul foglio Generale (riga 146) esiste
Questo non si deve mai verificare.
L'elenco Allievi (fogli) sul generale deve avere corrispondenza con i nomi foglio altrimenti avrai sempre errore

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 10/11/11 12:13

ok...grazie mille!!!
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 10/11/11 12:26

Per evitare errori di digitazione allievi
potresti inserire questo cosice nel VBA del foglio "Generale"
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "A4:CS1000"
Esiste = 0
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    NumC = Target
    Riga = Target.Row
    Col = Target.Column
    If NumC <> "" Then
    MsgBox Replace(NumC, ",", "")
        If Len(Replace(NumC, ",", "")) > 3 Then Exit Sub
        For FF = 1 To Worksheets.Count
            If Target = Sheets(FF).Name Then Esiste = 1
        Next FF
        If Esiste = 0 Then MsgBox "Attenzione Foglio ineistente", vbCritical
        Cells(Riga, Col).Select
    End If
End If
End Sub


Ad ogni inserimento di Codice allievo verrà controllato se il foglio esiste altrimenti un messaggio avviserà dell'errore
ciao

EDIT ore 13:00, Modificata macro
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 10/11/11 14:56

Grazie mille!!!
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 15/11/11 23:35

Ciao Flash30005, altro problemino con il file:
ho notato che la macro ha assegnato a tutti gli allievi il tempo che LZ ha fatto il 30/09/2011 sui 5 giri; ho provato a svuotare le colonne dei tempi su quella distanza e ho ripremuto il pulsante ma non ha modificato nulla. Come mai?

grazie mille

http://uploading.com/files/m1f28934/Rac ... 1-12.xlsm/

P.S. e lo stesso succede anche con altri dati!!!
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Re: [EXCEL] Copiare da una cella solo se...

Postdi Flash30005 » 15/11/11 23:52

Quale Pulsante?
Quale macro attiva quel pulsante?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Copiare da una cella solo se...

Postdi dova4ever » 16/11/11 08:17

Quel pulsante attiva la macro che mi hai inviato tu.
dova4ever

win7/office 2007
dova4ever
Utente Junior
 
Post: 73
Iscritto il: 31/10/11 00:21

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Copiare da una cella solo se...":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti