Condividi:        

Macro per ordinare elenco orari

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

Macro per ordinare elenco orari

Postdi marco_t » 17/07/17 11:04

Ciao ragazzi,
ho un elenco di date e orari che sono già ordinati secondo data e ora, è un elenco proveniente da alcune centraline ARPA che effettuano il monitoraggio di diversi inquinanti e restituiscono per ciascuno di questi inquinanti il valore misurato ogni ora per ogni giorno dell'anno. Il problema è molto semplice, vengono saltati alcuni orari per cui ho una situazione del genere:
Codice: Seleziona tutto
02/01/2006   00:00   26.22
02/01/2006   01:00   28.8
02/01/2006   02:00   25.82
02/01/2006   03:00   27.81
02/01/2006   04:00   27.03
02/01/2006   05:00   27.17
02/01/2006   06:00   27.11
02/01/2006   07:00   28.84
02/01/2006   09:00   33.07
02/01/2006   10:00   34.43
02/01/2006   12:00   30.72
02/01/2006   13:00   31.82
02/01/2006   14:00   32.32
02/01/2006   15:00   35.28
02/01/2006   16:00   32.63
02/01/2006   17:00   34.09
02/01/2006   18:00   37.43
02/01/2006   19:00   36.25
02/01/2006   22:00   36.71
02/01/2006   23:00   33.34
03/01/2006   00:00   30.24

stavo cercando di scrivere una macro che controlli gli orari e quando c'è un buco inserisca la data e l'orario mancante con una cella vuota ovviamente per il dato misurato cioè dovrebbe diventare così:
Codice: Seleziona tutto
02/01/2006   00:00   26.22
02/01/2006   01:00   28.8
02/01/2006   02:00   25.82
02/01/2006   03:00   27.81
02/01/2006   04:00   27.03
02/01/2006   05:00   27.17
02/01/2006   06:00   27.11
02/01/2006   07:00   28.84
02/01/2006   08:00   
02/01/2006   09:00   33.07
02/01/2006   10:00   34.43
02/01/2006   11:00   
02/01/2006   12:00   30.72
02/01/2006   13:00   31.82
02/01/2006   14:00   32.32
02/01/2006   15:00   35.28
02/01/2006   16:00   32.63
02/01/2006   17:00   34.09
02/01/2006   18:00   37.43
02/01/2006   19:00   36.25
02/01/2006   20:00   
02/01/2006   21:00   
02/01/2006   22:00   36.71
02/01/2006   23:00   33.34
03/01/2006   00:00   30.24


qui sul forum non ho trovato nulla che potessi aiutarmi, per cui mi sono deciso a scrivere. Grazie a tutti per l'eventuale aiuto.
marco_t
Newbie
 
Post: 3
Iscritto il: 17/07/17 10:31

Sponsor
 

Re: Macro per ordinare elenco orari

Postdi wallace&gromit » 17/07/17 14:27

ciao Marco, benvenuto nel forum.
Come prima cosa dovrai avere data e ora in una sola cella, in modo da avere record univoci. Se non lo sono ancora inserisci semplicemente, per esempio in colonna D, la formula =A2+B2 e trascini verso il basso.
Per la formula successiva questo dato dovrà trovarsi a sinistra del valore registrato, vedi tu se sovrascrivere le date originali oppure se fare una copia dei valori in colonna E.

Sul nuovo foglio prepari la colonna A con il registro di data e ora completo e in colonna B inserisci la formula:
Codice: Seleziona tutto
=SE.ERRORE(CERCA.VERT(A2;Foglio1!D:E;2;0);"")
Assumendo che tu abbia optato per mantenere i valori originali nelle colonne A e B del foglio 1.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Macro per ordinare elenco orari

Postdi Anthony47 » 17/07/17 21:51

W&G ha scritto:Come prima cosa dovrai avere data e ora in una sola cella, in modo da avere record univoci. Se non lo sono ancora inserisci semplicemente, per esempio in colonna D, la formula =A2+B2 e trascini verso il basso

La formula potrebbe fallire se le date e gli orari di colonna A e B non sono riportati nel formato "data" e "ora" di Excel; eventualmente allegaci un file esemplificativo.

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

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

Re: Macro per ordinare elenco orari

Postdi marco_t » 18/07/17 10:32

Intanto grazie per le vostre risposte, la formula suggerita da
wallace&gromit
avevo provato già ad utilizzarla ma senza successo, immagino che come abbia scritto
Anthony47
il problema sia in qualche formattazione di Excel, non riesco nemmeno a generare l'elenco completo con data e orario, forse sbaglio in qualche passaggio, allego il file come richiesto. La formula pare funzionare bene in caso utilizzi un elenco numerico ma non con data e ora come serve a me. Forse c'è qualche problema nell'impostazione della data ma non riesco a venirne a capo.
Ecco il file:
http://www.filedropper.com/dataorari

Come dicevo non riesco a capire nemmeno come non riesca a generare l'elenco completo, ad un certo punto ritorna daccapo:

Codice: Seleziona tutto
03/01/2014 01:00:00
03/01/2014 02:00:00
02/01/2014 00:00:00
02/01/2014 01:00:00
02/01/2014 02:00:00
02/01/2014 03:00:00
marco_t
Newbie
 
Post: 3
Iscritto il: 17/07/17 10:31

Re: Macro per ordinare elenco orari

Postdi wallace&gromit » 18/07/17 14:00

mannaggia!
c'è di mezzo un problema di arrotondamento.
Pur visualizzando 00 ai secondi, visto che in realtà tutti i valori di orari sono dei decimali con molte posizioni, il numero ottenuto dalla somma tra le colonne A e B non corrisponde necessariamente ad un numero di secondi pieni.
Ho risolto così:
la somma per record univoco viene fatta con questa formula:
Codice: Seleziona tutto
=ARROTONDA(A2+B2;5)


Per ottenere l'elenco di date completo ho usato questa formula in I3
Codice: Seleziona tutto
=ARROTONDA(I$2+(RIF.RIGA()-2)/24;5)
ma ho una vaga reminiscenza di un metodo geniale di inserimento automatico, se lo ritrovo lo riporto successivamente.

per trascinare verso il basso devi avere colonne contigue (per ora ho riempito la H con punti, ma puoi cancellarli se vuoi).
La colonna I sarà ovviamente più lunga, quindi quella devi trascinarla a mano.
Se inserisci solo il riferimento delle colonne F:G non devi preoccuparti di trovare l'ultima riga di dati.

Qui il risultato:
http://www.filedropper.com/dataorariverif_2
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Macro per ordinare elenco orari

Postdi wallace&gromit » 20/07/17 09:19

Aspettavo feedback su quanto detto in precedenza.
Comunque per quanto riguarda il riempimento non è così geniale come lo ricordavo, comunque una procedura potrebbe essere questa.
In un punto fuori dalla tabella inserisci la data e ora di partenza e la data e ora limite che ti interessano, per es. 1.1.2014 01:00 e 31.12.2014 23:00. Accanto ad ognuna di queste date converti queste date in valori numerici di ore, moltiplicandole per 24.
In H2 inserisci il primo valore ottenuto (999361).
Dal menu Home scegli "riempimento", si trova sulla destra ed è contrassegnato da una freccia blu in giù.
Scegli "colonne" e "serie" con incremento 1, numero limite 1008119, che corrisponde alla data limite fissata prima e procedi con il riempimento.
In I2 ora scrivi =arrotonda(H2/24;5) e copi verso il basso.

La comodità del sistema sta nel non dovere trascinare manualmente in giù fino a trovare la data corretta, questo avviene con il riempimento automatico.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Macro per ordinare elenco orari

Postdi marco_t » 20/07/17 10:08

Ciao wallace&gromit, scusami ma sono stato impegnato in questi giorni. Il metodo da te suggerito funziona alla perfezione. Io pensavo fosse un errore di formattazione della cella ma all'arrotondamento non ero arrivato, non riesco comunque a capire a cosa sia dovuto, è un errore interno di Excel o al metodo con cui vengono trattate le date, cioè comunque come numeri decimali?
Stavo cercando anche di velocizzare il tutto creando una macro perché ho parecchi file su cui effettuare queste correzioni e non vorrei impazzire, in caso abbia qualche dubbio o problema nella creazione della macro posso continuare comunque qui o devo aprire un thread apposito?
Non mi rimane che provare il tuo metodo per la creazione dell'elenco completo data+ora, ti faccio sapere a breve e grazie ancora per la disponibilità
marco_t
Newbie
 
Post: 3
Iscritto il: 17/07/17 10:31

Re: Macro per ordinare elenco orari

Postdi Anthony47 » 21/07/17 00:59

Gli orari sono trattati in Excel come numeri decimali (da 0 a 0.999999999999999); il Cerca.Vert presuppone l'uguaglianza perfetta tra i termini, ma evidentemente il decimale importato dalle centraline non e' calcolato con la stessa precisione di Excel; inevitabile ricorrere all'Arrotondamento.

Se avessi un problema di macro direi che e' meglio aprire una nuova discussione.

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


Torna a Applicazioni Office Windows


Topic correlati a "Macro per ordinare elenco orari":


Chi c’è in linea

Visitano il forum: Nessuno e 98 ospiti