Condividi:        

EXCEL - Macro Archivia dati

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 - Macro Archivia dati

Postdi seniorG62 » 27/01/10 02:46

Ciao a tutti.
Ritorno alla carica. Ho cercato di ispirarmi ad un precedente codice suggeritomi da FLASH, ma ahimè nulla, le difficoltà sono enormemente superiori alle mie capacità.
Sempre sul terreno del 10eLotto dovrei acrchiviare nel Foglio "RITARDO" le venti (20) estrazioni con a fianco i relativi ritardi attuali prelevati dal Foglio Tot_2009. Ciò deve accadere ad ogni estrazione quindi per 157 estrazioni. A partire dalla riga 24 del Foglio "RITARDO" dovranno essere raccolte le quantità come da esempio allegato.
Prima o poi qualcosa di complesso lo imparerò. Non è una minaccia, ma una promessa.
Garazie a chi vorrà assistemi
http://rapidshare.de/files/49061371/sen ... O.xls.html
Cordialmente.
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Sponsor
 

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 27/01/10 15:54

Forse questa:
Codice: Seleziona tutto
Sub senior2()
'
'
    Sheets("TOT_2009").Select
    Range("E" & Rows.Count).End(xlUp).Range("A1:T1").Copy
    Sheets("RITARDO").Select
    Cells(1, Columns.Count).End(xlToLeft).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Formula = "=VLOOKUP(Indirect(address(row(),Column()-1)),TOT_2009!AF:AG,2,0)"
    ActiveCell.Copy Destination:=Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(19, 0))
    Application.CutCopyMode = False
    Sheets("TOT_2009").Select
End Sub

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

EXCEL - Macro Archivia dati

Postdi seniorG62 » 27/01/10 19:01

Ciao Antony,
grazie per l'attenzione. Purtroppo il codice postato non esegue ciò che richiedo.
Provo a spiegarmi meglio.
Nel Foglio TOT_2009 "range E2:X..infinito" sono registrate le estrazioni (10eLotto - 20 numeri) una dopo l'altra, di volta in volta. L'ultima registrazione nel Foglio TOT_2009 è inserita nel range E165:X165. E' mio intento con la macro archiviare questa estrazione con a fianco il "ritardo attuale" nel Foglio "RITARDO" . I dati di estrazione e di ritardo attuale si ricavano dal Fogalio TOT_2009 colonne AF, AG.
I 20 numeri dell'estrazione vanno collocati nel Foglio "RITARDO", in questo esempio l'estrazione dovrà essere collocata nella colonna "DO1:DO20". Nella colonna "DP1:DP20" saranno collocati i ritardi attuali. Nella colonna "DP24:DP44" si collocheranno le quantità riferite al numero di ritardi (0 rit.=4 .. etc.). Ciò deve accadere ad ogni estrazione che, durante l'anno, sono 157.
Spero di aver chiarito, se servirà approfondiremo.
Grazie per l'attenzione.
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 27/01/10 20:59

E la macro non fa quello che hai scritto?

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

EXCEL - Macro Archivia dati

Postdi seniorG62 » 27/01/10 23:07

Ciao Antony,
il tuo codice non fa quello che ho scritto.
Ecco cosa fa: nel Foglio "RITARDO" non colloca i numeri estratti nella colonna di pertinenza, nella cella a fianco dove dovrebbero apparire i "ritardi attuali" in una cella si ed una no appaiono numeri tipo 107, 108, 109, 110, 111, 112, 113, 114,115,116, che non capisco da cosa sono generati. Inoltre si aggiunge una colonna, la terza, che non capisco da cosa viene generata, e non richiesta, che mostra #ND/D.Questo è quanto. Forse sbaglio io in quacosa?
Cordialmente.
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 28/01/10 00:56

Hum...
Io partendo da tuo file, con quella macro ho ottenuto questo:
Codice: Seleziona tutto
DH   DI   DJ   DK   DL   DM   DN    DO    DP    DQ
1    2     7    3    0    2    1    8    8    1   
0    3     2    5    15   4    4    9    9    19   
0    22    0    6    6    13   4    15   15   0   
0    32    6    7    2    15   4    16   16   9   
4    34    3    8    3    17   4    19   19   7   
2    35    0    20   5    18   8    32   32   0   
3    41    1    25   2    21   9    37   37   0   
2    42    3    30   5    23   2    38   38   5   
7    43    1    35   0    27   7    39   39   3   
2    44    1    36   1    28   15   41   41   2   
1    45    1    42   0    32   1    54   54   2   
4    47    0    47   0    33   2    55   55   20   
2    48    7    50   3    37   2    57   57   2   
10   49    6    58   4    51   3    63   63   1   
7    54    4    61   1    59   3    67   67   1   
0    57    0    63   9    68   10   72   72   2   
3    65    2    65   0    76   2    77   77   1   
8    70    5    67   5    78   10   81   81   0   
5    72    0    77   3    81   4    82   82   3   
8    80    8    84   8    86   3    90   90   6   
La colonna DO e' quella che gia' conteneva i dati dell' ultima estrazione con accanto i ritardi; la colonna DP ri-riporta (per effetto della macro) le estrazioni e accanto vengono "calcolati" i ritardi; che mi sembra quanto richiesto.

Presumo a questo punto che su 2007 vada in tilt l' istruzione "Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True", per cui ti chiedo di registrare una macro mentre:
-copi gli estratti da Tot_2009
-vai su Ritardo, selezioni ad esempio DS1
-fai Incolla-speciale /Valori, con spuntata l' opzione Trasponi
Poi pubblichi il codice ottenuto.

Non ho capito se la macro copia i dati estratti e se SI dove li copia.

Rileggendo il tuo penultimo messaggio, mi rendo conto di aver ignorato totalmente la parte relativa alle righe 24:44; ma anche ora che la leggo e la rileggo non capisco la domanda, che probabilmente era gia' stata chiarita in una discussione precedente che poi avevo smesso di seguire. Si tratta per caso di copiare le formule presenti ad esempio in DN24:DN44 e incollarle 2 colonne piu' a destra?

Inoltre la macro posiziona i nuovi estratti sopra i vecchi ritardi (vedi l' esempio sopra), se le formule sottostanti sono elaborazione dei ritardi allora mi viene il dubbio che i ritardi (sono le colonne in rosso?) probabilmente vanno mantenuti; ma questo si risolve modificando questa Cells(1, Columns.Count).End(xlToLeft).Select in questa: Cells(1, Columns.Count).End(xlToLeft).Offset(0,1).Select

Attendo il codice della macro registrata e le precisazioni relativamente ai dubbi espressi.

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

EXCEL - Macro Archivia dati

Postdi seniorG62 » 28/01/10 03:52

Ciao Antony,
nel mio file proposto fin dall'inizio, le colonne DO, DP, del Foglio RITARDO sono l'esempio di quello che deve realizzarsi.
Nel tuo precedente post, il contenuto delle colonne DP, DQ è ciò che dovrebbe trovarsi nelle colonne DO, DP.
I chiarimenti:
1) i numeri in rosso a fianco delle estrazioni sono "il ritardo attuale";
2) nella colonna DP da riga 24 a 44 vi è inserita a mano la formula = CONTA.SE(DP$1:DP$20;SA24) che sarebbe opportuno automatizzare con la macro.

Ho eseguito quanto tu mi hai indicato ed i risultati sono contenuti nel file allegato.
http://rapidshare.de/files/49066399/sen ... y.xls.html
Grazie per l'attenzione e spero di aver scritto in un italiano comprensibile.
Cordialmente
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 28/01/10 14:40

Oh bella, sembra proprio che paste-special+transpose in 2007 fa delle cose piu' fantasiose che nelle versioni precedenti.

Rigiriamo la macro in questo modo:
Codice: Seleziona tutto
Sub senior2a()
'
DaTot = Sheets("TOT_2009").Range("E" & Rows.Count).End(xlUp).Address
    Sheets("RITARDO").Select
    Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Select
For I = 0 To 19
  ActiveCell.Offset(I, 0).Value = Sheets("TOT_2009").Range(DaTot).Offset(0, I).Value
Next I
ActiveCell.Offset(0, 1).Select
For I = 0 To 19
  ActiveCell.Offset(I, 0).Value = Application.WorksheetFunction.VLookup(ActiveCell.Offset(I, -1).Value, Sheets("TOT_2009").Range("AF:AG"), 2, False)
Next I
Application.CutCopyMode = False
'
'Replica Formule sottostanti
    ActiveCell.Offset(23, -2).Range("A1:A23").Copy Destination:=ActiveCell.Offset(23, 0)
Sheets("TOT_2009").Select
End Sub

Abbandono il Paste-special & Transpose e faccio la copia delle estrazioni col primo loop For /Next; ho capito che anche i ritardi precedenti (non solo le estrazioni) vanno mantenute nello storico, quindi importo i valori dei ritardi correnti con un secondo loop invece che calcolarlo con le formule. Infine ho aggiunto anche le istruzioni per replicare sotto i nuovi ritardi le formule presenti nelle estrazioni precedenti.

Che fosse la volta buona?
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

EXCEL - Macro Archivia dati

Postdi seniorG62 » 28/01/10 19:03

Ciao Antony,
è veramente una gioia poterti dire, grazie! funziona tutto bene.
Volevo farti una domanda da 1 MILIONE di Dollari.
Implementando il codice che hai elaborato è possibile far "eseguire la macro" appena dopo aver digitato l'ultimo numero estratto?
Cordialmente.
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 28/01/10 23:01

Per 1 M$ la risposta e' SI, anche per qualcosa di meno.
Potresti usare l' evento worksheet_change sulla colonna X di TOT_2009 per lanciare la macro senior2a; ma in questo caso non te lo consiglio, perche' come minimo dovresti mettere una domanda "Vuoi davvero salvare la riga XXX in Ritardo?" e tra pigiare SI su un messagebox e pigiare volontariamente un pulsante a cui hai associato la macro io suggerisco il secondo metodo.

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

EXCEL - Macro Archivia dati

Postdi seniorG62 » 28/01/10 23:29

Ciao Antony,
grazie ancora. Seguirò il tuo suggerimento, già prima pensato, volevo evitare le dimenticanze ovvero di incartarmi. Comunque proseguirò con il pulsante.
Cordialmente.
seniorG62 ... in arte ... Giovanni
seniorG62
Utente Junior
 
Post: 72
Iscritto il: 20/07/08 17:37

Re: EXCEL - Macro Archivia dati

Postdi Anthony47 » 29/01/10 15:01

1- comunque se hai allocato quel budget di spesa, non ti preoccupare, ti aiutiamo noi a spenderlo :D
2- io pero' non ho capito perche' ricopi i dati da un foglio all' altro; non ti va bene tenere tutto su TOT_2009, cosi' se qualche riga non ha i suoi dati affiancati te ne accorgi subito?

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


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL - Macro Archivia dati":


Chi c’è in linea

Visitano il forum: Ricky0185 e 45 ospiti