Condividi:        

Copiare colonna di valori da un foglio all'altro

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

Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 15/10/12 11:19

Ciao a tutti.
Ho un file excel con 2 fogli.
Nelle colonne C e D del primo ho una serie di valori da copiare rispettivamente nelle colonne B e C del foglio2.
Il problema che non riesco a risolvere è: come copiare questi valori nel foglio2 a partire dalla riga relativa alla data del giorno corrente?
Non so se sono stato abbastanza chiaro.
Uso MS Office 2003.
Qui un file esplicativo.
Grazie.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Sponsor
 

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 15/10/12 11:35

Ma come pretendi di risalire alla data di oggi se nel foglio1 le date sono in formato testo e senza l'anno?
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: Copiare colonna di valori da un foglio all'altro

Postdi Anthony47 » 15/10/12 13:06

Da come hai descritto dovrebbe andare bene questa:
Codice: Seleziona tutto
Sub marco71()
RDest = Application.Match(CDbl(Int(Now())), Sheets("Foglio2").Range("A1:A10000"), 0)
Sheets("Foglio1").Range("A1").CurrentRegion.Copy Destination:=Sheets("Foglio2").Cells(RDest, 2)
End Sub

La tabella di partenza pero' comincia con un valore che non e' "Oggi"; se vuoi copiare accanto a questa data userai invece
Codice: Seleziona tutto
Sub marco72()
RDest = Application.Match(CDbl(DateValue(Trim(Left(Sheets("Foglio1").Range("A1"), 5)) & "/" & Year(Now()))), Sheets("Foglio2").Range("A1:A10000"), 0)
Sheets("Foglio1").Range("A1").CurrentRegion.Copy Destination:=Sheets("Foglio2").Cells(RDest, 2)
End Sub
In questo secondo caso, poiche' colonna A del sorgente non contiene una vera data, non escludo che la macro possa tradurre qualcosa come 04/10 non in 4-ott ma in apr-4; questo e' (in)determinato dalle tue impostazioni internazionali.

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

Re: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 15/10/12 13:07

Ciao Flash30005 e Anthony47 e grazie per la vostra risposta.
Il file excel che ho inviato è un esempio poco calzante con la realtà.
Forse sarò più chiaro con delle immagini

Versione Excel: 2003
Nome file: Rev . 01 ottobre 2012.xls
Num. fogli: 3 --> Competitors Report, Pianificazione, Calcolo Tariffa

Nel foglio Pianificazione, tramite macro, importo nelle colonne A e B dei valori presenti su un file excel estrapolato da un gestionale.
Immagine

Alla macro di importazione vorrei agganciare un codice che mi permetta di copiare le colonne A e B presenti nel foglio Pianificazione, all'interno del foglio Competitors Report, nelle colonne P e Q, ma cominciando dalla data corrispondente al giorno attuale.
Immagine

Fatto ciò, devo copiare la colonna Q, del foglio Competitors Report, nel foglio Calcolo Tariffa, in corrispondenza della data (sia per la colonna che per le righe).
Immagine

Fatto ciò, devo copiare le due colonne nel foglio Calcolo Tariffa, corrispondenti a "Δ Occ. 1 giorno" e "Tariffa Suggerita" ed incollarle nel foglio Competitors Report, in corrispondenza delle colonne contrassegnate dalle stesse etichette.
Immagine

Spero che così sia chiaro.
Vorrei anche sapere se esiste un corso on line per capire come scrivere un codice in VBA.

Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 15/10/12 13:13

Leggi il post di Anthony (sopra al tuo)

nel frattempo ci avevo lavorato anche io per risolvere con macro, quindi la posto perché dovrebbe funzionare anche questa
Codice: Seleziona tutto
Sub copiaDati()
Set Ws1 = Worksheets("Foglio1")
Set Ws2 = Worksheets("Foglio2")
Ws2.Range("B2:C400").ClearContents
DataO = Date
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 1 To UR1
DataA = DateSerial(Year(Date), Mid(Ws1.Range("A" & RR1).Value, 4, 2), Left(Ws1.Range("A" & RR1).Value, 2))
If DataA >= DataO Then
RigaIni = RR1
GoTo saltaRR1
End If
Next RR1
GoTo esci
saltaRR1:
For RR1 = RigaIni To UR1
DataA = DateSerial(Year(Date), Mid(Ws1.Range("A" & RR1).Value, 4, 2), Left(Ws1.Range("A" & RR1).Value, 2))
For RR2 = 2 To UR2
DataB = Ws2.Range("A" & RR2).Value
If DataA = DataB Then
Ws2.Range("B" & RR2).Value = Ws1.Range("C" & RR1).Value
Ws2.Range("C" & RR2).Value = Ws1.Range("D" & RR1).Value
End If
Next RR2
Next RR1
esci:
End Sub


(Macro che dovrai adattare alla luce delle immagini che hai pubblicato)
ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 15/10/12 13:55

Scusami ancora, ma non capisco i comandi scritti nel codice e quindi non so cosa andare a cambiare.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 15/10/12 16:23

Perdona ma avevi inviato un file con il tuo quesito

ti rimetto il file con la macro funzionante
Download file

Vedi tu se è più chiaro ora
altrimenti invia il file non le immagini di un file che non ho

ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 15/10/12 17:50

Ecco il file:
download file
Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 15/10/12 19:01

Ok ma a che punto cosa dovrebbe fare la macro?

Non c'è nulla di somigliante alla richiesta del primo post
o mi sbaglio?

ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 15/10/12 19:16

Non sbagli!
In effetti mi ero riproposto di ricevere un codice che poi avrei potuto modificare io...ma mi sbagliavo :oops: !
Proprio non riesco a capire la logica del codice in VBA :cry: .
Comunque il file che ho inviato è quello su cui mi interessa lavorare e i passaggi che la macro deve eseguire sono negli screenshots che ho postato.
Grazie ancora per la pazienza.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 15/10/12 20:38

:?:
Dagli screen shot non vedo specifiche ma solo una marea di dati
Da ciò che hai scritto come "didascalia" ad essi non capisco cosa hai e cosa ti serve ancora.
Se vuoi puoi descrivere con frasi passo passo cosa ti occorre come hai fatto nel primo post: hai dato un file e hai detto C e D (foglio1) devono essere copiati in B e C del foglio2 con la condiziondi della data corrente.

Ora che quei riferimenti non sono validi cosa vorresti avere?

Ciao

P.s. mai pensare di semplificare e poi credere di risolvere da soli,
peggio ancora postare un file con riferimenti completamente diversi da ciò che si ha veramente (postilla che scrivo spesso ma che pochi leggono e la applicano)
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 16/10/12 07:30

Ok Flash30005...ho sbagliato!
Cercherò di spiegarti meglio cosa desidero che faccia questa macro.
Nel foglio "Pianificazione", io importo n. 4 colonne, contenenti in A le date da oggi a X, in B la parola Totale (non influente), in C ed in D i valori che devono essere copiati rispettivamente nelle colonne P e Q del foglio "Competitors Report", a partire dalla riga corrispondente alla data di oggi.
Poi la macro dovrebbe anche copiare la colonna Q del foglio "Competitors Report", nel foglio "Calcolo Tariffa", in corrispondenza della colonna contrassegnata dalla data odierna e a partire dalla riga corrispondente alla data di oggi. Questo farà modificare le ultime 2 colonne (nell'esempio F e G, K e L...BX e BY) contenenti formule, che dovranno essere copiate dalla macro ed incollate come valori in Competitors Report nelle colonne R e S a partire dalla riga corrispondente alla data di oggi.
Grazie.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 16/10/12 09:02

Marco75CT ha scritto:Poi la macro dovrebbe anche copiare la colonna Q del foglio "Competitors Report",


Volevi dire Q e R in corrispondenza delle prime due colonne di CalcoloTariffa a parità di data (A e B o H e I, M-N) etc?

Ci sarà sicuramente qualche problema con le celle unite della testata...

Ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 16/10/12 09:18

No. La colonna da copiare nel foglio "Calcolo Tariffa", in corrispondenza della colonna e riga contrassegnata dalla data odierna, é solo la Q. Se la cella unità é un problema, si può anche dividere (é solo una questione estetica).
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 16/10/12 10:10

Prova questa macro e fai sapere
Codice: Seleziona tutto
Sub copiaDati()
Set Ws1 = Worksheets("Competitors Report")
Set Ws2 = Worksheets("Pianificazione")
Set Ws3 = Worksheets("Calcolo Tariffa")
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
Ws2.Range("C1:D" & UR2).ClearContents
Application.ScreenUpdating = False
Application.Calculation = xlManual
DataO = Date
UR1 = Ws1.Range("N" & Rows.Count).End(xlUp).Row
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 3 To UR1
    DataA = DateSerial(Year(Ws1.Range("N" & RR1).Value), Month(Ws1.Range("N" & RR1).Value), Day(Ws1.Range("N" & RR1).Value))
    If DataA >= DataO Then
        RigaIni = RR1
        GoTo saltaRR1
    End If
Next RR1
GoTo esci
saltaRR1:

For RR1 = RigaIni To UR1
    DataA = DateSerial(Year(Ws1.Range("N" & RR1).Value), Month(Ws1.Range("N" & RR1).Value), Day(Ws1.Range("N" & RR1).Value))
    For RR2 = 1 To UR2
        DataB = DateSerial(Year(Date), Mid(Ws2.Range("A" & RR2).Value, 4, 2), Left(Ws2.Range("A" & RR2).Value, 2))
        If DataA = DataB Then
            Ws2.Range("C" & RR2).Value = Ws1.Range("P" & RR1).Value
            Ws2.Range("D" & RR2).Value = Ws1.Range("Q" & RR1).Value
            Exit For
        End If
    Next RR2
Next RR1
esci:
DataI = DateSerial(Year(Ws1.Range("N" & RigaIni).Value), Month(Ws1.Range("N" & RigaIni).Value), Day(Ws1.Range("N" & RigaIni).Value))
UR3 = Ws2.Range("B" & Rows.Count).End(xlUp).Row
UC3 = Ws3.Cells(4, Columns.Count).End(xlToLeft).Column
For CC3 = 3 To UC3 Step 5
    DataC = DateSerial(Year(Ws3.Cells(1, CC3)), Month(Ws3.Cells(1, CC3)), Day(Ws3.Cells(1, CC3)))
    If DataC = DataI Then
        Col3 = CC3
        Exit For
    End If
Next CC3
AggD = 0
For Col3S = Col3 To UC3 Step 5
For RR1 = RigaIni To UR1
    DataA = Ws1.Range("N" & RR1).Value + AggD
    For RR3 = 5 To UR3
        DataR = DateSerial(Year(Ws3.Range("B" & RR3).Value), Month(Ws3.Range("B" & RR3).Value), Day(Ws3.Range("B" & RR3).Value))
        If DataA = DataR Then
            Ws3.Cells(RR3, Col3S).Value = Ws1.Range("Q" & RR1).Value
            'Ws3.Cells(RR3, Col3S + 1).Value = Ws1.Range("R" & RR1).Value
            Exit For
        End If
    Next RR3
Next RR1
AggD = AggD + 1
Next Col3S
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 16/10/12 12:05

Innanzitutto grazie 1000!
Ho provato la tua macro e queste sono le cose che non vanno:
1. la macro copia il contenuto delle celle P e Q del foglio Competitors Report e le incolla nelle celle C e D del foglio Pianificazione, mentre dovrebbe fare l'esatto contrario.
Immagine

2. la macro incolla i dati nel foglio Calcolo Tariffa, ma si ferma alla riga corrispondente al giorno 11/09/13, mentre dovrebbe proseguire fino all'ultimo valore che risulta dall'elenco importato (nell'esempio il 30/09/13, ma potrebbe essere anche maggiore)
Immagine

3. la macro incolla i dati nel foglio Calcolo Tariffa, a partire dalla colonna corrispondente alla data odierna e prosegue anche con le altre colonne corrispondenti alle date successive, mentre dovrebbe limitarsi alla colonna corrispondente alla data odierna
Immagine

4. nel foglio Calcolo Tariffa, i dati che compaiono nelle colonne "Δ Occ. 1 giorno" e "Tariffa Suggerita" immediatamente a destra della colonna "Occupazione" che siamo andati a modificare, non vengono copiati nelle corrispondenti colonne del foglio Competitors Report
Immagine

Grazie
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 16/10/12 15:06

Prova adesso
Ma per quanto riguarda il quesito 4 ho dei dubbi perché ti avevo chiesto se doveva essere copiato anche il valore della colonna R ma mi hai detto
Marco75CT ha scritto:No. La colonna da copiare nel foglio "Calcolo Tariffa", in corrispondenza della colonna e riga contrassegnata dalla data odierna, é solo la Q. ...


Quindi non so
Se vuoi copiare in "Calcolo Tariffa" anche le colonne R e S di "Competitors Report" allora scommenta le due righe codice evidenziate nella macro
Codice: Seleziona tutto
Sub copiaDati()
Set Ws1 = Worksheets("Pianificazione")
Set Ws2 = Worksheets("Competitors Report")
Set Ws3 = Worksheets("Calcolo Tariffa")
UR2 = Ws2.Range("N" & Rows.Count).End(xlUp).Row
Ws2.Range("P3:Q" & UR2).ClearContents
Application.ScreenUpdating = False
Application.Calculation = xlManual
DataO = Date
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = 3 To UR2
    DataB = Ws2.Range("N" & RR2).Value
    If DataB >= DataO Then
        RigaIni = RR2
        GoTo saltaRR2
    End If
Next RR2
GoTo esci
saltaRR2:

For RR2 = RigaIni To UR2
    DataB = Ws2.Range("N" & RR2).Value
    For RR1 = 1 To UR1
        DataA = DateSerial(Year(Ws2.Range("N" & RR2).Value), Mid(Ws1.Range("A" & RR1).Value, 4, 2), Left(Ws1.Range("A" & RR1).Value, 2))
        If DataA = DataB Then
            Ws2.Range("P" & RR2).Value = Ws1.Range("C" & RR1).Value
            Ws2.Range("Q" & RR2).Value = Ws1.Range("D" & RR1).Value
            Exit For
        End If
    Next RR1
Next RR2

DataI = Ws2.Range("N" & RigaIni).Value
UR3 = Ws3.Range("B" & Rows.Count).End(xlUp).Row
UC3 = Ws3.Cells(4, Columns.Count).End(xlToLeft).Column
For CC3 = 3 To UC3 Step 5
    DataC = DateSerial(Year(Ws3.Cells(1, CC3)), Month(Ws3.Cells(1, CC3)), Day(Ws3.Cells(1, CC3)))
    If DataC = DataI Then
        Col3 = CC3
        Exit For
    End If
Next CC3
AggD = 0
For RR2 = RigaIni To UR2
    DataB = Ws2.Range("N" & RR2).Value + AggD
    For RR3 = 5 To UR3
        DataR = Ws3.Range("B" & RR3).Value
        If DataB = DataR Then
                Ws3.Cells(RR3, Col3).Value = Ws2.Range("Q" & RR2).Value
               ' Ws3.Cells(RR3, Col3 + 3).Value = Ws2.Range("R" & RR2).Value  '<<<<< togliere commento
                'Ws3.Cells(RR3, Col3 + 4).Value = Ws2.Range("S" & RR2).Value  '<<<<< togliere commento
             Exit For
        End If
    Next RR3
Next RR2
esci:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
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: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 16/10/12 15:36

Quasi ci siamo!
Funziona tutto tranne il punto 4
4. nel foglio Calcolo Tariffa, i dati che compaiono nelle colonne "Δ Occ. 1 giorno" e "Tariffa Suggerita" immediatamente a destra della colonna "Occupazione" che siamo andati a modificare, non vengono copiati nelle corrispondenti colonne del foglio Competitors Report

Occorre che le due colonne "Δ Occ. 1 giorno" e "Tariffa Suggerita" immediatamente a destra della colonna "Occupazione" che siamo andati a modificare vengano copiate nelle colonne R e S del foglio "Competitors Report". Chiaramente devono essere copiati i valori e non le formule in esse contenute.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Marco75CT » 16/10/12 16:43

Scusami! Solo ora mi rendo conto di cosa volevi dirmi quando chiedevi se copiare o meno anche la colonna R.
Sono stato poco preciso.
I valori "Δ Occ. 1 giorno" e "Tariffa Suggerita" vengono fuori da formule presenti nel foglio Calcola Tariffa. Da li vengono poi copiati nel foglio Competitors Report.
Marco75CT
Utente Senior
 
Post: 146
Iscritto il: 05/08/11 11:54

Re: Copiare colonna di valori da un foglio all'altro

Postdi Flash30005 » 16/10/12 17:23

Ok
per copiare le colonne R e S
devi togliere il commento (l'apostrofo) alle due righe evidenziate
da così
Codice: Seleziona tutto
               ' Ws3.Cells(RR3, Col3 + 3).Value = Ws2.Range("R" & RR2).Value  '<<<<< togliere commento
                'Ws3.Cells(RR3, Col3 + 4).Value = Ws2.Range("S" & RR2).Value  '<<<<< togliere commento


a così
Codice: Seleziona tutto
                Ws3.Cells(RR3, Col3 + 3).Value = Ws2.Range("R" & RR2).Value  '<<<<< togliere commento
                Ws3.Cells(RR3, Col3 + 4).Value = Ws2.Range("S" & RR2).Value  '<<<<< togliere commento


Ciao

P.s. nel foglio non ci sono formule
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-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Copiare colonna di valori da un foglio all'altro":


Chi c’è in linea

Visitano il forum: raimea e 60 ospiti