nmanif Inserito: 15 ottobre 2008 Segnala Inserito: 15 ottobre 2008 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?
Vingar59 Inserita: 15 ottobre 2008 Segnala Inserita: 15 ottobre 2008 (modificato) 1) Lancia Excel2) File Apri3) Tipo file: Tutti i file (per vedere e acchiappare il file txt che ti interessa)4) Scegli il tuo file5) Apri6) 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) Avanti8) Con un occhio alla finestra di anteprima individua il delimitatore che ti permette di srgranare i dati (Tabulazione ; , Spazio Altro)9) Avanti10) 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: 15 ottobre 2008 da Vingar59
nll Inserita: 15 ottobre 2008 Segnala Inserita: 15 ottobre 2008 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.
Vingar59 Inserita: 15 ottobre 2008 Segnala Inserita: 15 ottobre 2008 Il problema grosso è se il dispositivo registra i campi separati da CR.Excel li acchiappa in colonnaPer metterli in riga a gruppi di 4, senza usare VBA c'è da diventare matti.Comunque non demordiamo.
Vingar59 Inserita: 15 ottobre 2008 Segnala Inserita: 15 ottobre 2008 (modificato) 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 CR1 CR2 CR3 ..415/10/2008567820/10/2008910111225/10/2008131415161) 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 riempire4) formatti la colonna C con data, la D con ora, le altre con genericoRisultato:10/10/2008 1 2 3 415/10/2008 5 6 7 820/10/2008 9 10 11 1225/10/2008 13 14 15 16ll file xls Excel 2003:http://rapidshare.com/files/154265648/Prov..._trasp.xls.html Modificato: 15 ottobre 2008 da Vingar59
Vingar59 Inserita: 15 ottobre 2008 Segnala Inserita: 15 ottobre 2008 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 origopen file dest:convertfor x= 1 to 5input data origprint data destnextprint cr destif not end of file goto :convertclose allEsiste un interprete basic eseguibile stand alone per Pc?
nmanif Inserita: 16 ottobre 2008 Autore Segnala Inserita: 16 ottobre 2008 la data ovviamente è in formato data e orale altre variabili sono numeriche e non sempre dello stesso formatoun 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 etcquindi 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.
Vingar59 Inserita: 16 ottobre 2008 Segnala Inserita: 16 ottobre 2008 - 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
nll Inserita: 16 ottobre 2008 Segnala Inserita: 16 ottobre 2008 (modificato) 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: 16 ottobre 2008 da nll
nmanif Inserita: 5 novembre 2008 Autore Segnala Inserita: 5 novembre 2008 sì così va bene,grazie mille.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora