Condividi:        

Estrazione Data

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

Re: Estrazione Data

Postdi Anthony47 » 04/11/17 15:07

ik8ozv ha scritto: mi manca un solo passaggio e cioe' quella di mettere il tutto in ordine di data dal piu' vecchio al piu' nuovo.
Non so se bisogna fare un'altra macro ancora o se possiamo inserirla in qualche macro esistente.
Ditemi voi come fare


Ma forse te l'ho gia' detto:
Anthony ha scritto: Per l'ordinamento, registra una ulteriore macro mentre esegui l'ordinamento con i comandi Excel, poi "richiama" anche questa come ti avevo detto di fare con le altre
Per la cronaca, la macro registrata la richiami con
Codice: Seleziona tutto
Call NomeDellaMacroRegistrata


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

Sponsor
 

Re: Estrazione Data

Postdi ik8ozv » 04/11/17 15:32

Anthony,
Grazie per la risposta.
Potresti essere cosi' gentile da dirmi come fare la macro
o cosa scriverci all'interno?
Grazie
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 04/11/17 15:37

Non prendertela, ma "non lo so"; e' per questo che ti dico di "registrartela" tu stesso (usando comandi normali di Excel) e poi richiamarla in fondo al codice che oggi gia' usi.

Per le istruzioni e i primi suggerimenti su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

Se qualcosa va storto o non ti convince allora pubblica il codice ottenuto dalla registrazione e ci ragioneremo insieme.

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

Re: Estrazione Data

Postdi ik8ozv » 04/11/17 16:17

Mi sa che non ci sono riuscito in quando mi ha dato l'errore:

Per eseguire l'operazione, è necessario che le celle abbiano le stesse dimensioni.

Inoltre ho provato ad editare la macro che si e' creato e leggo questo:

Sub Macro1()
'
' Macro1 Macro
'

'
Columns("D:D").Select
End Sub

Dove sbaglio?
Grazie
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 05/11/17 02:16

Non so che cosa hai fatto quindi non so immaginare cosa hai sbagliato.
Credo che sia meglio che alleghi il file, e spieghi quale e' la parte che va ordinata.

Per le istruzioni:
viewtopic.php?f=26&t=103893&p=605487#p605487

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

Re: Estrazione Data

Postdi ik8ozv » 05/11/17 12:17

Salve a tutti,
seguo l'indicazione di Anthony sperando di non beccarmi un infrazione per un doppio post.
Ho questo file excel:

http://www.filedropper.com/dettagliospese08-0908-10

Premetto che i files possono essere 1 solo o piu' di 1.
Quello che vorrei fare e':

1) Unire i files in uno unico;
2) Estrapolare la sola data senza l'ora ma nello stesso tempo lasciandoli nella
stessa cella di appartenenza senza dove creare una nuova colonna;
3) Ordinare il file per Data da piu' vecchio al piu' nuovo;
4) Convertire la colonna "Costo €" in valore euro con 5 decimali dopo la virgola;
5) Eliminare le righe che hanno come colonna "Costo €", le solo celle contenente il valore "0,00000";
6 ) Sommare i costi della colonna "Costo €" ( la somma vabene anche sotto la stessa colonna ).

Spero che ora mi diate una mano a tutto e non spezzettato come prima.
Inoltre ripeto scusatemi se ho ripetuto il post.
Grazie
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 05/11/17 23:06

Ragazzi,
mi manca un solo passaggio e cioe' quella di mettere il tutto in ordine di data dal piu' vecchio al piu' nuovo.
Non so se bisogna fare un'altra macro ancora o se possiamo inserirla in qualche macro esistente.
Ditemi voi come fare.
Grazie ancora.

Il file che hai allegato evidentemente non e' quello a cui sei gia' arrivato, ma non capisco perche' vorresti ripartire daccapo; mi limito a qualche suggerimento spot.

Il file contiene solo stringhe, non Date, ne' Valori; quindi oltre ad aggiustare la data di col D e' opportuno aggiustare anche il Costo di colonna F. Sulla base del file pubblicato la macro che fa questi lavori e' la seguente:
Codice: Seleziona tutto
Sub ConvertiDate2()
Dim ur As Long
Dim rng As Range
Dim cel As Range
ur = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("D8:D" & ur)
For Each cel In rng
       cel.Value = Int(DateValue(cel.Value))
       cel.Offset(0, 2) = CDbl(cel.Offset(0, 2))
Next cel
End Sub

La macro lavora sul foglio "attivo al momento del lancio"


Per consolidare nuovi fogli di questo formato in coda al contenuto di un foglio "Riepilogo" (che deve gia' esistere e gia' includere il contenuto almeno di un primo foglio) potresti procedere in questo modo:
-inserisci il nuovo foglio all'interno del file che contiene il riepilogo
-esegui su questo nuovo foglio la Sub ConvertiDate2
-lo accodi al contenuto di Riepilogo con questa macro:
Codice: Seleziona tutto
Sub AccodaNew()
Range(Range("A8"), Range("A8").End(xlDown).End(xlToRight)).Copy _
  Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End Sub

Volendo "richiami" la ConvertiDate2 in testa alla AccodaNew, cosi' con la sola AccodaNew prima converti le date e poi accodi a Riepilogo:
Codice: Seleziona tutto
Sub AccodaNew()
Call ConvertiDate2
Range(Range("A8"), Range("A8").End(xlDown).End(xlToRight)).Copy _
  Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End Sub


Per la questione Ordinamento, partendo dal foglio nuovo appena trattato con la Sub AccodaNew, avvia le registrazione macro, poi diligentemente:
-selezioni il foglio Riepilogo
-selezioni A7, premi Contr-Maiusc-FrecciaDestra, premi Contr-Maiusc-FrecciaInBasso
-comandi l'ordinamento, usando i comandi di Excel per impostare le chiavi e le opzioni di ordinamento e la sua esecuzione.
-selezioni A7
-Interrompi la registrazione

La macro che ti serve e' cosi' stata registrata

Per le istruzioni e i primi suggerimenti su come registrare una macro (lo sai gia' ma ripeto):
viewtopic.php?f=26&t=103893&p=622593#p622593
In particolare
" b) Eseguire "diligentemente" i comandi di Excel che si vogliono memorizzare nella macro
Si suggerisce di provare la sequenza prima di procedere con la registrazione della macro."

Potrai eseguire questa macro tutte le vole che vuoi.
Eventualmente la richiami in coda della Sub AccodaNew, in modo da fare tutto con AccodaNew
Codice: Seleziona tutto
Sub AccodaNewOmniComprensiva()
Call ConvertiDate2
Range(Range("A8"), Range("A8").End(xlDown).End(xlToRight)).Copy _
  Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Call MacroRegistrataPerOrdinamento
End Sub

Questa converte date e costi, accoda a Riepilogo, ordina tutto il riepilogo.

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

Re: Estrazione Data

Postdi ik8ozv » 06/11/17 13:37

Anthony,
grazie per la risposta ma sinceramente non ci ho capito un granche'.
Comunque ho provato a lanciare la macro ConvertiDate2 ma non ho capito cosa abbia fatto.
Ho notato solo che mi ha tolto tutti gli orari la sciandomi solo le date ( e questo e giusto )
Ho inoltre notato che tutti i campi della colonna F con 0,00000 sono diventati 0.
In fine mi hai detto come mai re iniziare daccapo?
Allora ti posto il file con le macro precedenti inclusi e funzionanti e ti chiedo la solo macro
per poter mettere il file in ordine di data dal piu' vecchio al piu' nuovo.

http://www.filedropper.com/dettagliospe ... toconmacro

Grazie Ancora.
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 07/11/17 23:47

ConvertiDate2 modifica i campi Data e Costo (che nel file che pubblicasti erano stringhe, non date ne' numeri) in Date e Numeri. Quindi la stringa "0,0000" diventa il numero 0; se vuoi vederlo con 1, 2, 3 o i decimali che vuoi devi formattare la colonna con 1, 2, 3 o i decimali che vuoi.

Per quanto riguarda l'ordinamento, non capisco perche' continui a chiedere a me di fare il lavoro che piu' volte ti ho detto di fare; se non hai compreso le mie istruzioni dillo e lo rispiego.

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

Re: Estrazione Data

Postdi ik8ozv » 08/11/17 08:39

Ciao Anthony,
Lo so che è scocciante ripetere le stesse cose.
Come ti ho detto prima io ho provato a registrare la
Macro ma già nel crearlo mi da questo errore:

Per eseguire l'operazione, è necessario che le celle abbiano le stesse dimensioni.

Non sono tanto esperto in campo excel, ecco perché
chiedo aiuto a voi Guru.
Grazie ancora e scusami dell’insistenza
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 08/11/17 19:22

Non sono tanto esperto in campo excel, ecco perché
chiedo aiuto a voi Guru.
Grazie ancora e scusami dell’insistenza

Io capisco che questa discussione ha avuto una evoluzione un po' travagliata, e questo puo' talvolta confondere la controparte.

Ma giusto due giorni fa, avendo lavorato sul tuo file, ti ho scritto:
Per la questione Ordinamento, partendo dal foglio nuovo appena trattato con la Sub AccodaNew, avvia le registrazione macro, poi diligentemente:
-selezioni il foglio Riepilogo
-selezioni A7, premi Contr-Maiusc-FrecciaDestra, premi Contr-Maiusc-FrecciaInBasso
-comandi l'ordinamento, usando i comandi di Excel per impostare le chiavi e le opzioni di ordinamento e la sua esecuzione.
-selezioni A7
-Interrompi la registrazione


La macro che ti serve e' cosi' stata registrata

Per le istruzioni e i primi suggerimenti su come registrare una macro (lo sai gia' ma ripeto):
viewtopic.php?f=26&t=103893&p=622593#p622593
In particolare
" b) Eseguire "diligentemente" i comandi di Excel che si vogliono memorizzare nella macro
Si suggerisce di provare la sequenza prima di procedere con la registrazione della macro."

Potrai eseguire questa macro tutte le vole che vuoi.
Eventualmente la richiami in coda della Sub AccodaNew, in modo da fare tutto con AccodaNew

Codice: Seleziona tutto
    Sub AccodaNewOmniComprensiva()
    Call ConvertiDate2
    Range(Range("A8"), Range("A8").End(xlDown).End(xlToRight)).Copy _
      Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    Call MacroRegistrataPerOrdinamento
    End Sub


Questa converte date e costi, accoda a Riepilogo, ordina tutto il riepilogo.


Tieni presente che parlo del foglio Riepilogo perche' cosi' avevo chiamato io il foglio in cui, tramite il processo descritto nel messaggio originale, creavo il riepilogo dei vari fogli; tu mi pare che l'hai chiamato Dettaglio, quindi (seguendo le istruzioni date) userai Dettaglio invece che Riepilogo.

Insomma, per registrare la macro che ordina il tuo foglio devi partire da un foglio diverso da Dettaglio (o come tu hai chiamato il foglio col riepilogo), avviare la Registrazione macro, selezionare il foglio Dettaglio (o come tu l'hai chiamato), selezionare A7, premere Contr-Maiusc-FrecciaDestra, premere Contr-Maiusc-FrecciaInBasso
-comandare l'ordinamento, usando i comandi di Excel per impostare le chiavi e le opzioni di ordinamento e la sua esecuzione.
-interrompere la Registrazione macro.
La tua macro e' ora pronta; la puoi eseguire autonomamente, oppure metterla in coda al processo che tu hai deciso di usare per sistemare le date e poi accodare il singoli fogli al foglio di riepilogo, seguendo quanto e' stato fatto nella Sub AccodaNewOmniComprensiva del mio messaggio messo in evidenza sopra.

Tu probabilmente, quando volevi ordinare l'elenco, selezionavi le colonne intere (no a partire da riga 7), compreso quindi la parte iniziale che con l'ordinamento non c'entrava un fico secco.

Spero che con un po' di pazienza trovi il bandolo della matassa...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrazione Data

Postdi ik8ozv » 10/11/17 14:39

Ciao Anthony,
oggi ho riprovato ma non ho capito bene la macro AccodaNew.
Premetto che sono 2 files excel e non 2 fogli che chiameremo A e B.
Ho provato ad aprire il file A ed ho provato ad eseguire la sola macro AccodaNew ma mi ha dato l'errore di run-time '9'.
Rileggendo la tua risposta ho notato che il nome del foglio e'diverso dal mio.
Ho corretto nella macro il nome del foglio da "Riepilogo"a "Dettaglio".
Rilanciando la macro ho notato che non succede nulla ma nello stesso tempo non ho piu' l'errore di prima.
Riprovato di nuovo chiudendo senza salvare il file e riaperto.
A questo punto, sempre seguendo il tuo consiglio ho creato la macro inserendo prima il ConvertiDate2 e poi AccodaNew.
Lanciando la macro, ho notato che la colona Data e Ora si e 'convertito in solo Date e la colonna costo dove
avevo 0,00000 in 0 ( fin qui tutto giusto).
Ho provato a questo punto a registrare la nuova macro per l'ordinamento usando il registratore come da te suggeritomi:
Mi sono messo sulla cella A7.
Cliccato sul Tab Visualizza.
Cliccato su Macro e poi su Registra Macro.
Si e' aperto una finestra.
Lasciato tutto come di default e cliccato su OK.
Cliccato sul Tab Home.
Tenendo premuto il tasto control e Maiusc ( Ho usato il tasto shift che si trova sulla destra sotto al tasto Block Caps,non so se e' quello che intendi per Maiusc oppure se il tast Caps Lock ), ho premuto prima la freccia a destra e poi quella in basso.
Si e' evidenziato l'intero foglio.
Cliccato su Ordina e Filtra.
Cliccato su Ordinamento Personalizzato e settato i campi cosi:
Ordina per: Data e Ora;
Ordina in base a: Valori;
Ordine: Dal meno recente al piu' recente.
Cliccato su OK
Tornato nel Tab Visualizza.
Cliccato su Macro e poi su Interrompi Registrazione.
Ho messo le tre macro in una unica macro utilizzando la macro AccodaNewOmniComprensiva da te suggeritomi,
sostituendola alla macro AccodaNew, correggendo il nome del foglio ed il nome della macro da chiamare nel mio caso Macro1.
Lanciato la macro AccodaNewOmniComprensiva, ho notato che la colona Data e Ora si e 'convertito in solo Date e la colonna costo dove avevo 0,00000 in 0 e la colonna Data e Ora sembra essere messo in ordine pero' scrollando giu' ho notato che il file parte dalla data 01/10/2017 ma arrivato alla data 08/10/2017, passa dalla data 09/09/2017 alla data 08/10/2017 per poi ripassare dalla data 09/09/2017 alla data 30/09/2017.
Per cui non sono proprio in ordine.
Dove ho ancora sbagliato?
Grazie
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 10/11/17 15:58

Allora mi pare che stai lavorando seguendo i consigli descritti nel mio messaggio del 05/11/17 sera, che contempla:
a) la Sub ConvertiDate2, per "lavorare" il foglio originale (chiamamolo Pippo), trasformando le date in vere date e i costi in veri numeri.
b) la Sub AccodaNew, che prende il foglio Pippo "lavorato" e lo accoda al foglio di riepilogo (il tuo Dettaglio)
Ambedue queste macro vanno lanciate avendo attivo il foglio Pippo
Per lavorare la a) e (soprattutto) la b), il foglio Pippo (ripetiamolo, quello originale da "lavorare e poi accodare a riepilogo") deve essere precedentemente copiato dal file originale al file che contiene il riepilogo.

c) la famosa macro per ordinare, creata con Registra macro.

UNA PRIMA considerazione: il processo tramite ConvertiDate2 e AccodaNew accoda a un riepilogo pre-esistente un nuovo elenco, ragionevolmente. Ma il riepilogo "pre-esistente" contiene vere date e veri numeri, o ancora Stringhe?
E' possibile che il preesistente in realta' non fosse gia' stato "lavorato" per cui ti trovi poi con date e stringhe, e l'ordinamento va a pallino.
Se vuoi controllarlo, vai su una cella con una "data" e formattala come numero con 2 decimali: le vere date saranno ora visualizzate come un numero Intero (es 43049, per 10 nov 2017) o eventualmente con dei decimali (che rappresentano le ore).
Ma il modo piu' semplice di "risolvere" e' di attivare il foglio col riepilogo preesistente e lanciare la Sub ConvertiDate2. POI procedi per accodare il nuovo foglio.

LA SECONDA considerazione, e' che non sono in grado di capire se la sequenza di comandi e' giusta:
1) Mi sono messo sulla cella A7.
2) Cliccato sul Tab Visualizza.
Cliccato su Macro e poi su Registra Macro.
Si e' aperto una finestra.
Lasciato tutto come di default e cliccato su OK.
3) Cliccato sul Tab Home.
...

I numeri li ho aggiunti io:
-al punto 1 non so in quale foglio eri posizionato
-al punto 2 non so cosa intendi per Tab Visualizza (e' il tab del Menu? Hai un foglio che si chiama Visualizza, e che cosa contiene?)
-al punto 3 non so cosa intendi per tab Home (e' il tab del Menu? Hai un foglio che si chiama Home, e che cosa contiene?)

La sequenza che devi fare e' questa:
a) Vai sul foglio del riepilogo e mettiti in A1 (questa istruzione non te l'avevo mai data ma serve al punto d successivo); poi selezioni un foglio diverso dal riepilogo.
b) Avvia la registrazione macro
c) selezioni il foglio di riepilogo
d) selezioni A7 (poiche' la selzione era in A1, il comando "seleziona A7" viene certamente inserito nella macro), premi Contr-Shift-FrecciaDestra, premi Contr-Shift-FrecciaInBasso (esatto Shift, non usare CapsLock). Vedi Nota1
e) comandi l'ordinamento, usando i comandi di Excel per impostare le chiavi e le opzioni di ordinamento e la sua esecuzione. Vedi Nota2
f) selezioni A7
g) Interrompi la registrazione

Nota1: il comando d non seleziona/evidenzia l'intero foglio, ma solo l'area da A7 fino alla fine, cioe' l'area che va ordinata eccetto le parti iniziali del foglio.

Nota2: da quanto hai scritto e' possibile che tu non abbia presente, nel menu di Excel, il tab Sviluppo, che e' quello che ti serve per avviare la registrazione macro. Le istruzioni su "Come registrare una macro" (vedi viewtopic.php?f=26&t=103893&p=622593#p622593) spiegano anche come visualizzare questo menu; seguile e non ti troverai male.

Completata la registrazione della macro, controlla se il risultato dell'ordinamento sia corretto.

Se e' corretto allora inseriscila nella Sub AccodaNewOmniComprensiva che a questo punto dovrebbe essere pronta per gestire un nuovo foglio originale.
Se l'ordinamento NON E' corretto allora pubblica il file su cui hai lavorato, comprensivo del foglio di Riepilogo (come lo hai ottenuto), del foglio originale gia' "lavorato" (tramite la Sub AccodaNewOmniComprensiva) e possibilmente di un altro foglio con dei dati originali non ancora "lavorati", e di tutto il codice macr che hai utilizzato, e vedremo che cosa va storto.

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

Re: Estrazione Data

Postdi ik8ozv » 10/11/17 18:50

Non ci sto capendo piu' nulla. SCUSAMI :cry: :cry: :cry: :cry:
Ancora non capisco il procedimento dell'AccodaNew. :cry: :cry: :cry:
Prendo uno dei due files excel che ho che tu lo chiami Pippo ed io l'ho chiamato A. ( spero che almeno questo ci troviamo ).
Creo la macro ConvertiDate2 e la lancio il quale mi toglie gli orari alla colonna Data e Ora e mette la colonna Costo €. a 0.
Non capisco la parte:

b) la Sub AccodaNew, che prende il foglio Pippo "lavorato" e lo accoda al foglio di riepilogo (il tuo Dettaglio)

Il foglio Pippo ed il foglio Dettaglio, sono lo stesso foglio? Se no, come nasce l'altro foglio?

Grazie
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 11/11/17 00:48

Eh, tra poco non ci capisco piu' nemmeno io e cosi' siamo pari...

Punti fermi:
-in un file Excel (il termine giusto dovrebbe essere "Cartella di lavoro", oppure Workbook) ci sono uno o piu' Fogli (o Fogli di lavoro).
-non ha senso parlare di primo file, secondo file, altro file, e cosi' per termini vaghi che ognuno interpreta a suo sentimento.

Quindi da adesso usiamo la terminologia giusta e i nomi veri; cosi' io non sono costretto a chiamare "foglio che contiene il riepilogo" un foglio che certamente tu l'avrai chiamato in un modo preciso. E se questo modo preciso corrispondesse al nome "Dettaglio" allora non vedo la furbizia a volersi confondere dando a un foglio di riepilogo un nome che invece non fa pensare al riepilogo.

Ripartiamo dal file che avevi pubblicato il 5/11 pomeriggio
Si chiama dettaglioSpese_08-09_08-10.xls
Contiene un foglio chiamato Dettaglio

Questo file ha le celle di colonna D ("Data e Ora") e F ("Costo €") in formato Stringhe.

Aggiungiamo a questo file la Sub ConvertiDate2 (vedi codice nel mio messaggio del 5/11 sera tardi, viewtopic.php?f=26&t=108865&p=639997#p639829)
La macro va inserita in un "Modulo standard del vba" di quel file. Immagino che sai farlo; nel caso che "Invece No", allora, partendo dal file excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-copia il codice e incollalo nel frame vuoto di destra.

Torniamo su excel ed eseguiamo, tenendo attivato il foglio Dettaglio (e' l'unico foglio, non si puo' nemmeno fare diversamente) lancia la Sub ConvertiDate2. Immagino che sai farlo, ma nel caso che "Invece No", allora, partendo dal foglio Excel:
-premi Alt-F8
-scegli ConvertiDate2 dall'elenco di macro disponibili
-premi Esegui

In questo modo abbiamo "normalizzato" le colonne D ed F

Siccome vogliamo creare un riepilogo, siccome questo e' il primo foglio elaborato allora questo risultato puo' essere il file che da adesso chiamiamo Riepilogo-Spese.xls
Siccome e' un "riepilogo", rinominiamo il foglio "Dettaglio" in modo piu' consono; chiamiamolo quindi "Riepilogo"
Pertanto:
-rinomina il nome foglio e chiamalo Riepilogo
-su questo foglio, formatta le colonne D ed F come meglio ti piace (es la colonna F con 5 decimali?)
-salva il file assegnandogli il nome Riepilogo-Spese.xls

Ora abbiamo cominciato il file di riepilogo, contiene gia' un mese

Ti arriva il secondo file, dello stesso formato del dettaglioSpese_08-09_08-10.xls che poco fa abbiamo trasformato file Riepilogo-Spese.xls
Apri il file Riepilogo-Spese.xls, e copiagli dentro il foglio Dettaglio proveniente dal "secondo file"; spero che tu lo sappia gia' fare; nel caso che "Invece No" allora:
-partendo dal secondo file, tasto dx sul tab col nome foglio "Dettaglio"
-scegli "Sposta o Copia"
-nella finestrella Sposta o copia che ti si apre, scegli "Alla cartella:" = Riepilogo-Spese.xls; "Prima del foglio:" = "(sposta alla fine)"; spunta Crea una copia; premi Ok

Ora il file Riepilogo-Spese.xls contiene un foglio Riepilogo e un foglio che dovrebbe chiamarsi Dettaglio; il foglio Dettaglio va normalizzato sulle colonna D ("Data e Ora") e F ("Costo €"). Per questo usiamo nuovamente la Sub ConvertiDate2, tenendo attivo il foglio da normalizzare (cioe' Dettaglio).

Ora che il foglio Dettaglio e' stato normalizzato possiamo copiarlo in coda al foglio Riepilogo, per creare un riepilogo che si allunga.
Per questo useremo la Sub AccodaNew. Copiamo quindi il suo codice e inseriamolo nello stesso Modulo in cui avevamo inserito la Sub ConvertiDate2, in coda al codice esistente.
Per evitare equivoci, il codice che useremo e'
Codice: Seleziona tutto
Sub AccodaNew()
Range(Range("A8"), Range("A8").End(xlDown).End(xlToRight)).Copy _
  Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End Sub

Sai gia' come eseguire la Sub AccodaNew, che lancerai tenendo attivo il foglio Dettaglio appena "normalizzato".

Se sei stato curioso avrai "PRIMA" controllato quante righe c'erano nel foglio Riepilogo, in modo da accorgerti che "DOPO" AccodaNew ci sono altre righe in piu', quelle che provengono dal foglio Dettaglio.

Il nostro Riepilogo si sta' ingrossando, quindi vuoi vederlo ordinato per data.

Per questo decidi di seguire le istruzioni che ti ho dato oggi pomeriggio per registrare in proprio la macro; le ripeto, non si sa mai:
La sequenza che devi fare e' questa:
a) Vai sul foglio del riepilogo e mettiti in A1 (questa istruzione non te l'avevo mai data ma serve al punto d successivo); poi selezioni un foglio diverso dal riepilogo.
b) Avvia la registrazione macro (usando le opzioni disponibili nel tab Sviluppo del menu di Excel)
c) selezioni il foglio di riepilogo
d) selezioni A7 (poiche' la selzione era in A1, il comando "seleziona A7" viene certamente inserito nella macro), premi Contr-Shift-FrecciaDestra, premi Contr-Shift-FrecciaInBasso (esatto Shift, non usare CapsLock). Vedi Nota1
e) comandi l'ordinamento, usando i comandi di Excel per impostare le chiavi e le opzioni di ordinamento e la sua esecuzione. Vedi Nota2
f) selezioni A7
g) Interrompi la registrazione


Eseguo queste istruzioni e registro la Sub Macro1, che mi viene messa in Modulo2 del vba e che ha questo codice:
Codice: Seleziona tutto
Sub Macro1()
' Macro1 Macro
' Ordinamento Riepilogo
'
    Sheets("Riepilogo").Select
    Range("A7").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Riepilogo").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Riepilogo").Sort.SortFields.Add Key:=Range( _
        "D8:D673"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Riepilogo").Sort
        .SetRange Range("A7:M673")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A7").Select
End Sub

Adesso ho una macro per Normalizzare le colonne D ed F del foglio mensile; una macro per accodare il foglio mensile al foglio Riepilogo; una macro per Ordinare il foglio Riepilogo.

Poiche' vanno lanciate in sequenza una dopo l'altra, tanto vale metterle in una macro complessiva che le richiama una dopo l'altra.
Dovresti sapere come inserire in una macro la Call di un'altra macro, ma nel caso che "Invece No" allora te la do io gia' fatta:
Codice: Seleziona tutto
Sub FaiTu()
Call ConvertiDate2
Call AccodaNew
Call Macro1
End Sub


La Sub FaiTu andrebbe lanciata tenendo attivo il foglio Dettaglio; allora tanto vale che lo scriviamo nella macro cosi' non sbagliamo, in piu' ci mettiamo un messaggio di "Fatto". Quindi il codice che useremo e' invece:
Codice: Seleziona tutto
Sub FaiTuttoTu()
Sheets("Dettaglio").Select
Call ConvertiDate2
Call AccodaNew
Call Macro1
Application.DisplayAlerts = False
'Sheets("Dettaglio").Delete            '<<<*** Vedi Nota1
Application.DisplayAlerts = True
MsgBox ("Normalizzato foglio di Dettaglio e accodato a Riepilogo")
End Sub

Mettilo nello stesso Modulo vba in cui si trovano la Sub ConvertiDate2 e la Sub AccodaNew.

Questo e' tutto...

Controlla a occhio che nel foglio Riepilogo ci siano anche le date provenienti dal foglio Dettaglio, e quindi rimuovi il foglio Dettaglio. Salva il nuovo file di riepilogo.

Nota1: Dopo un po' di volte che usi il processo e sei ragionevolmente convinto che funzioni tutto regolarmente allora puoi togliere l'apostrofo in testa all'istruzione marcata <<<*** e il foglio Dettaglio sara' cancellato automaticamente dalla stessa Sub FaiTuttoTu.

Quando hai un nuovo file da aggiungere al tuo file di riepilogo:
-apri il file Riepilogo-Spese.xls
-copiaci il foglio Dettaglio proveniente dal nuovo file mensile; assicurati che sul file Riepilogo-Spese.xls il nome sia esattamente Dettaglio, perche' la macro se lo aspetta con quel nome.
-puoi chiudere il nuovo file mensile
-puoi lanciare la Sub FaiTuttoTu
-controlli che l'esito sia soddisfacente
-puoi cancellare (a mano o direttamente con la macro) il foglio Dettaglio appena importato su Riepilogo.
-salvi il nuovo file di riepilogo

E cosi' via nei secoli dei secoli.
Amen
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrazione Data

Postdi ik8ozv » 11/11/17 13:16

Anthony,
Prima di tutto GRAZIE GRAZIE GRAZIE.
Ho seguito alla lettera tutto il procedimento ma ho notato una cosa.
Il tutto fila liscio fino a quando non creo e lancio la macro Sub FaiTu e poi la SubFaiTuttoTu in quando,
come dici tu prima, mi fai creare le varie macro e lanciarle al momento dopo creato ma poi quando arrivo,
al punto delle macro sopra, lanciandole mi va ad accodare lo stesso file di nuovo per cui se ho capito bene, per evitare cio'
mi tocca lanciare le macro uno alla volta seguendo la sequenza che mi hai suggerito nella macro Sub FaiTu.
Facendo cosi', arrivo fino in fondo senza problemi.
Ancora Grazie tante.
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 11/11/17 18:08

Bene, forse l'abbiamo chiusa...

Devo comunque farti notare che io ti avevo preparato la Sub FaiTuttoTu ma ti avevo detto di usarla "Quando [avresti avuto] un nuovo file da aggiungere al tuo file di riepilogo" (non di lanciarla gia' sulla situazione corrente). La Sub FaiTu era un prototipo, la puoi cancellare.

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

Re: Estrazione Data

Postdi ik8ozv » 03/02/18 16:59

Anthony47 ha scritto:Bene, forse l'abbiamo chiusa...

Devo comunque farti notare che io ti avevo preparato la Sub FaiTuttoTu ma ti avevo detto di usarla "Quando [avresti avuto] un nuovo file da aggiungere al tuo file di riepilogo" (non di lanciarla gia' sulla situazione corrente). La Sub FaiTu era un prototipo, la puoi cancellare.

Ciao


Ciao Anthony,
Ho notato che non mi trovo con la somma in quando manca l'IVA.
Come faccio ad aggiungere alla macro "SOMMA" l'IVA in modo che la somma sia gia' comprensivo di IVA?
Grazie
Enzo
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

Re: Estrazione Data

Postdi Anthony47 » 04/02/18 23:33

Ehm... negli ultimi mesi ho fatto altro... mi potresti fare il riassunto di quel che stai dicendo, cosi' non devo cercare di capirlo dai messaggi precedenti?

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

Re: Estrazione Data

Postdi ik8ozv » 07/08/18 14:56

@Anthony47:
Ciao alla macro "SOMMA" dovrei aggiungerci l'iva del 22%.
Come fare?
Grazie.
Enzo

P.S. la Macro Somma e' attualmente cosi':

Codice: Seleziona tutto
Sub Somma()
Dim UR As Long
Dim rng As Range
Dim cel As Range
Dim myT As Double
'
Application.ScreenUpdating = False

UR = Cells(Rows.Count, 6).End(xlUp).Row
Set rng = Range("F8:F" & UR)
For Each cel In rng
    cel.Value = cel.Value * 1
    Cells(UR + 2, "F").Formula = "=sum(F1:F" & UR & ")"
Next cel
Application.ScreenUpdating = True
Cells(UR + 2, "F").Formula = "=sum(F1:F" & UR & ")"
End Sub
ik8ozv
Utente Junior
 
Post: 58
Iscritto il: 10/04/16 11:54

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Estrazione Data":


Chi c’è in linea

Visitano il forum: Gianca532011, Marius44 e 52 ospiti