Vai al contenuto
PLC Forum


ordinamento dati in excel


nmanif

Messaggi consigliati

ho un plc che mi scarica su file .txt 4 variabili ordinate in questa maniera:

(data e ora) (var1) (var2) (var3)

e le scarica ogni 5 minuti una dietro all'altra.

ora ho il problema che importando il file in excel non riesco ad ordinarle come nel formato sopra riga per riga senza usare un programmino in vb

mi hanno detto che ci sono degli editor di testo che consentono di fare quello che voglio.

voi sapete come fare?

Link al commento
Condividi su altri siti


1) Lancia Excel

2) File Apri

3) Tipo file: Tutti i file (per vedere e acchiappare il file txt che ti interessa)

4) Scegli il tuo file

5) Apri

6) Scegli il tipo di file che meglio si adatta ai dati (Delimitati: da qualcosa saranno pure separati anche se non ci hai detto da cosa o Larghezza fissa e poi decidi tu ove interrompere la colonna)

7) Avanti

8) Con un occhio alla finestra di anteprima individua il delimitatore che ti permette di srgranare i dati (Tabulazione ; , Spazio Altro)

9) Avanti

10) Fine e hai importato la tua tabella riga per riga.

Posta un file txt con le tue variabili: come sono separate? Da spazi? Fra parentesi come le hai scritte?

(data e ora) (var1) (var2) (var3)

Modificato: da Vingar59
Link al commento
Condividi su altri siti

Se hai un delimitatore di campo e un CRLF per separare i record, allora Excel, con le indicazioni di Vingar59, può andar bene, ma se ti manca la sequenza CRLF devi solo sperare che almeno i record abbiano lunghezza fissa, così separi prima i record, e in un secondo tempo i campi (puoi farlo anche con Excel). Non credo che il PLC abbia un output randomico, quindi un qualche delimitatore dovresti poterlo identificare. Diventa difficile per noi farlo perché non abbiamo informazioni a sufficienza sul PLC, o sulla struttura dell'output.

Link al commento
Condividi su altri siti

Il problema grosso è se il dispositivo registra i campi separati da CR.

Excel li acchiappa in colonna

Per metterli in riga a gruppi di 4, senza usare VBA c'è da diventare matti.

Comunque non demordiamo.

Link al commento
Condividi su altri siti

Poniamo che tu abbia tutti i dati in campi seperati dallo stesso delimitatore (CR o altro). I record non sono in questo caso segnalati da delimitatore specifico.

10/10/2008 CR

1 CR

2 CR

3 ..

4

15/10/2008

5

6

7

8

20/10/2008

9

10

11

12

25/10/2008

13

14

15

16

1) li importi in Excel col metodo del secondo post: tutti nella prima colonna.

2) vai in C1 e inserisci la formula:

=INDICE($A:$A;((RIF.RIGA()-1)*5+RIF.COLONNA()-2);0)

dove al posto di 5 metti il numero dei campi della tua serie di record:

(data e ora) (var1) (var2) (var3) 4 o meglio 5 supposto che ora apparirà in cella separata da data.

3) trascini la selezione verso il basso e verso dx del numero di campi da riempire

4) formatti la colonna C con data, la D con ora, le altre con generico

Risultato:

10/10/2008 1 2 3 4

15/10/2008 5 6 7 8

20/10/2008 9 10 11 12

25/10/2008 13 14 15 16

ll file xls Excel 2003:

http://rapidshare.com/files/154265648/Prov..._trasp.xls.html

Modificato: da Vingar59
Link al commento
Condividi su altri siti

A questo punto apro una sfida.

Non è la prima volta che mi trovo di fronte alla difficoltà di risolvere un problema che ai tempi del Commodore 64 si sarebbe molto più facilmente affrontato convertendo il file dei dati con un semplice script basic del tipo:

Open file orig

open file dest

:convert

for x= 1 to 5

input data orig

print data dest

next

print cr dest

if not end of file goto :convert

close all

Esiste un interprete basic eseguibile stand alone per Pc?

Link al commento
Condividi su altri siti

la data ovviamente è in formato data e ora

le altre variabili sono numeriche e non sempre dello stesso formato

un delimitatore non ce l'ho ma lo posso introdurre come ho introdotto gli spazi tra ogni variabile per poterle definire.

il file così registrato è per esempio.

dt#10.5.2008.10:55:50 34 546 21 dt#10.5.2008.11.00.00 453 432 543 etc

quindi vedete che mi risulta difficoltoso prendere i primi quattro pezzi e metterli da A1 ad A4, da B1 a B4, da C1 a C4 etc per poi ricavarne un grafico.

Link al commento
Condividi su altri siti

- al posto degli spazi introduci un CR

- importi come sopra

- modifichi le celle della colonna di data ora con le funzioni di stringa, eliminando dt# e dividendo data e ora

Link al commento
Condividi su altri siti

Più che sostituire gli spazi con CR e semplicemente eliminare dt#, io sostituirei solo dt# con un CR, in questo modo avremo direttamente la separazione dei records, mentre lo spazio può essere considerato un normalissimo delimitatore di campo, direttamente gestibile dall'importazione di Excel, senza ulteriori trasformazioni.

Rimane il problema della data, che vedo a lunghezza variabile, in quanto giorni e mesi possono comparire sia a una cifra, sia a due, solo il punto separa le parti della data e la data dall'ora, e i due punti separano. La cosa è risolvibile con una semplice formula da copiare su due celle della stessa riga, in modo da avere su una la data e sull'altra l'ora. Un esempio e poi le formule:

         Col.A                 Col.B    Col.C        Col.D
Riga1   10.5.2008.10:55:50    10       10.5.2008    10:55:50
Riga2   1.5.2008.10:5:50       9        1.5.2008    10:5:50
Riga3   10.15.2008.10:55:0    11       10.15.2008   10:55:0
Riga4   1.15.2008.1:55:50     10        1.15.2008    1:55:50
La colonna A è la prima parte del dato dopo la sostituzione di dt# con CR e l'importazione nel foglio di Excel. La colonna B serve solo a spiegare il passaggio, ma puoi tranquillamente ometterla. La colonna C è l'estrazione della data, mentre la D è l'estrazione dell'ora. Come vedi ho forzato le varie condizioni di data e ora, con una, o due cifre, ma la formula funziona comunque (grazia anche ai 4 caratteri dell'anno, che mi permette di iniziare la ricerca carattere sicuramente lì in mezzo, prima del punto che separa data da ora) e ora le formule del primo record: Per la data:
=LEFT(A1;FIND(".";A1;8)-1)
Per l'ora:
=RIGHT(A1;LEN(A1)-FIND(".";A1;8))

Può soddisfare le tue esigenze?

Ovviamente poi puoi fare un Copia&Incolla speciale di tutto sopra sé stesso, in modo da sostituire le formule con i valori calcolati e poi elimini prima la colonna che non ti serve più.

Per l'ora non dovresti avere problemi di formato, mentre per la data o crei un formato che utilizzi i punti come separatore, o sostituisci (con ricerca e sostituisci tutto nella colonna) i punti con le "/" o il "-", secondo quale separatore è impostato.

P.S.: Ho rivisto l'allineamento dei caratteri nella finestra CODE, ma non ha spaziatura fissa mentre scrivo e allora devo andare a tentativi per dargli un'aspetto decente.

Modificato: da nll
Link al commento
Condividi su altri siti

  • 3 weeks later...

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...