PDA

Visualizza versione completa : Confronto e unione documenti



iaia
01-03-13, 19: 15
Ho due documenti di testo con dati separati da tabulazioni.
Una parte dei dati sono uguali nei due documenti, una parte è diversa.
Devo ottenere un terzo documento che contenga una sola volta i dati di entrambi i documenti.
I dati sono da verificare riga per riga.
Se due righe sono identiche nel terzo documento va copiata una sola volta, se due righe sono diverse vanno tenute entrambe.
Sono certa di averlo fatto senza problemi in Dos ma è passata un'infinità di tempo e non mi ricordo come.
Se serve un esempio invento qualche dato e lo pubblico.
Grazie.

Kirk78
01-03-13, 22: 58
Sembra più per la sezione Programmazione cara iaia. Io metterei i documenti in un foglio elettronico.

:bai

iaia
01-03-13, 23: 33
Dici programmazione? Grazie a te e a chi mi sposterà.

Io ho usato il formato testo perché sono convinta che esista un comando dos per fare ciò di cui ho bisogno, ma non ci vuole nulla a trasformarli in foglio elettronico.
Si possono anche unire "a mano" ovviamente, copiando i dati oppure unendo i file con i comandi DOS, quello per concatenare i files me lo ricordo, poi si possono ordinare i dati, ma resterebbe da controllare tutto ed eliminare a mano le righe doppie. Sono migliaia di pagine, non ce la farei.
Esiste un modo per eliminare in modo automatico le righe uguali nei fogli elettronici?

Kirk78
02-03-13, 00: 00
Si ho chiesto se è da spostare. Comunque se usi OpenOffice inserisci i 2 documenti in 2 fogli diversi (stesso file) e metti in un terzo una funzione del tipo

Only registered members can view code.
Non sapendo esattamente cosa vuoi fare se sono righe diverse non so se ti conviene ordinare i 2 fogli.

Il comando DOS per "concatenare" 2 file in un terzo è semplicemente COPY

Only registered members can view code.

E' per questo che penso sia meglio la sezione programmazione.

Per "incollare" un file di testo in un foglio di OpenOffice basta anche aprirlo con notepad selezionare tutto copiare e incollare nel folgio dedicato. Apparirà la finestra di importazione dove di default la separazione dei campi è il TAB ma che puoi cambiare.

Mi fai un piccolo esempio?

:bai

iaia
02-03-13, 00: 15
Sto provando, poi ti rispondo.

iaia
02-03-13, 09: 34
Eccomi, ho fatto!
Grazie a Kirk :thx che mi ha fatto pensare al foglio di calcolo, altrimenti sarei ancora qui a pensare a cosa facevo col dos.

Kirk, la tua funzione non poteva funzionare, perchè i dati uguali c'erano ma un documento era 10 volte più grande dell'altro, le righe uguali non corrispondevano come posizione.
Ho iniziato semplicemente aprendo i due file di testo con Libre office (Open office mi piace poco)

Nel tentativo di usare il sistema di Kirk avevo unito i due fogli di lavoro in un unico file es:

Foglio1



nomecognome A
indirizzo A
telefono A


nomecognome B
indirizzo B
telefono B


nomecognome C
indirizzo C
telefono C




Foglio2



nomecognome A
indirizzo A
telefono A


nomecognome B
indirizzo B
telefono B2


nomecognome E
indirizzo E
telefono E


ma come dicevo non riuscivo a confrontarli, così ho unito i dati in un unico foglio tramite il copia e incolla e li ho ordinati in base ai dati della colonna A




nomecognome A
indirizzo A
telefono A
(da tenere)


nomecognome A
indirizzo A
telefono A
(da togliere)


nomecognome B
indirizzo B
telefono B
(da tenere)


nomecognome B
indirizzo B
telefono B2
(da tenere)


nomecognome C
indirizzo C
telefono C
(da tenere)


nomecognome E
indirizzo E
telefono E
(da tenere)









A questo punto ho scomposto il problema e ho analizzato i dati una colonna alla volta tramite il semplice:

=SE( A1=A2;"uguale";"")
Ho tolto le formule lasciando solo il testo (uguale)
Fatto questo avrei voluto ordinare i dati in base agli "uguale", eliminare completamente le righe con tre "uguale" e controllando i dati delle righe con uno o due "uguale" ma il documento era troppo grande e non riusciva a completare l'operazione.
Ho provato a salvare il tutto in formato testo e riaprire ma niente da fare. L'ho aperto con libre office write e tramite una macro ulteriormente automatizzata con Easy macro recorder ho iniziato ad eliminare le righe con tre "uguale".
Al termine della macro controllavo, finché verso le 4 di stamattina :notte: il documento finalmente è diventato di dimensioni gestibili.
A quel punto l'ho ordinato con il foglio di calcolo e in un attimo ho cancellato le (ancora tantissime) righe doppie residue.
Tutte queste complicazioni perché
non ho avuto il coraggio di dimezzare il foglio e di ordinare le due metà separatamente.
Era talmente grande! Non sarei riuscita a controllare i risultati, non mi sono fidata.

Alla fine nonostante le complicazioni varie :tong2 ci ho messo di più per scrivere questa spiegazione che per fare il tutto.

Kirk78
02-03-13, 13: 07
L'importante è che hai risolto :sisi. La discussione è sicuramente da mettere in Programmare, si grazie - Questa è la sezione Programmare, si grazie (http://www.collectiontricks.it/forum/programmare-si-grazie-f39/) anche se è una micro programmazione di un foglio elettronico (imho).

Il mio ovviamente era uno spunto (avevo appunto detto "del tipo"), e poi non sapevo che un foglio era più grande dell'altro, numero di campi etcetera. Per pura programmazione vedo di fare qualcosa di più elaborato sia per te, magari ne devi fare altri, che per tutto CT.
Tra Libre e Open più o meno sono la stessa cosa: l'importante è usare un Open Source :oo2! Per ora Open (non ho neanche aggiornato) va benissimo, ma nel caso posso sempre installare anche Libre visto che non sei la prima che mi dice questa cosa. :boh

:bai

iaia
02-03-13, 13: 23
Guarda, io non uso molto i fogli elettronici, soprattutto da quando ho smesso di lavorare, quindi non ho un'esperienza tale da illustrarti perché preferisco Libre a open. Per quello mi limito a dire che mi è più simpatico.

Se ti verrà un'idea migliore sarò lieta di provarla.
Ah, ho dimenticato di dire che prima di confrontare la colonna succesiva si devono ordinare i dati, questo per ogni colonna.
A me è andata bene, NON credo che tutti i tipi di dati si possano gestire con il mio metodo.

Penso che per spostare la discussione ci voglia un moderatore e lo ringrazio.
:bai

Kirk78
02-03-13, 13: 38
Si, infatti ho fatto la segnalazione tramite il tasto http://www.collectiontricks.it/images/ctweb2/buttons/report-40b.png apposito (se vuoi farlo anche tu che sei l'autrice fallo pure). Il sistema che vorrei fare è quello di rendere inutile anche l'ordinazione ma farla fare alla macro per Open/Libre. Il programma più simpatico: leggere i post di iaia! :fleurs

Con i fogli elettronici ci puoi fare qualsiasi cosa, sono eccezionali. Ci puoi mettere la rubrica telefonica, gli SMS scaricati dal tuo cellulare, le spese correnti del mese, i calcoli per l'imu(:furious) e tasse, i quiz che hai postato con la data per avere il tuo premio... insomma qualsiasi cosa. Ti consiglio vivamente di utilizzarli più spesso. Presto ti faccio il programmino, ma devi dirmi se i "campi" (colonne) sono 3 o più di 3. Mi sembrano tanto 2 rubriche che vorresti unire togliendo i doppioni inutili. Se fosse quello allora si potrebbe fare un qualcosina anche di più.

:boh

iaia
02-03-13, 14: 10
Sì, i campi sono 3, il casino non l'ho fatto io, non toccava a me sistemarlo, e non ci guadagno niente, solo mi diverte l'idea di mettere ogni tanto il cervello in movimento.Sorvoliamo sul fatto che poi mi sono arenata e ho chiesto :ghgh e anche sull'assurdo particolare di non avere voluto dividere il foglio a metà. :ehmmL'importante alla fine è avere la soddisfazione di riuscirci, se poi ci si diverte meglio.Non sono così ordinata! Tengo pochissimi sms, l'IMU la calcolo sul sito del Comune, e cerco di spendere solo quanto mi posso permettere. Mi piacerebbe essere ordinata, ma non lo sono. Sai per cosa uso il foglio elettronico? per tentare di risolvere l'Akronima solution (http://www.collectiontricks.it/forum/club-degli-enigmisti/Ct4888-wordquiz-giochi-parole-2013-1-semestre/index2.html#post148788).I miei fidi compagni del Wordquiz non ci credevano quando l'ho detto. :shockPoi sicuramente per le offerte e richieste della banca dei semi.Ognuno ha le sue manie.:bai

Kirk78
02-03-13, 14: 45
Per l'unione hai più metodi, quello DOS oppure il cut & paste su un foglio. Poniamo che l'OPZIONE 1 è la tua.


OPZIONE 2 (senza macro) per TUTTI i tipi di dato con OpenOffice

INIZIO
Avere su un foglio tutti i dati non importa se ordinati o no. L'ho chiamato TuttiDati
Inserire nella prima riga il nome dei campi. Nel tuo caso ho messo Nome Cognome, Indirizzo, Telefono
Attivare il Filtro Standard con Dati -> Filtro -> Filtro Standard
Mettere come filtro Nome Cognome = - non vuoto -
Cliccare su - Più Opzioni (che haimé pochi usano) http://images.collectiontricks.it/images/35506841844768459808.jpg (http://images.collectiontricks.it/) e fleggare Univoco (mi sono dimenticato di fleggarlo sull'immagine) e Scrivi il risultato del filtro in ed inserire l'inizio del 2° foglio che ho chimato Risultato, quindi $Risultato.$A$1
Premere OK
Avrete le righe non duplicate nel secondo foglio Risultato http://images.collectiontricks.it/images/38682205375248952454.jpg (http://images.collectiontricks.it/)
FINE


Scusa il ritardo ma ieri ero proprio distrutto. Magari non ti facevo fare le 4 di notte :ehmm mea culpa mea maxima culpa.

L'opzione con macro a breve quando ci medito un po dopo che ho mangiato altrimenti svengo.

:bai

iaia
02-03-13, 16: 18
Macché mea culpa!
Anzi... lascia perdere l'altro tentativo perché non sono capace di usare nemmeno questo. :ehmm
Grazie.

Kirk78
02-03-13, 18: 49
Perché non riesci? Sono pochissimi passaggi. L'esempio l'ho fatto praticamente (non incollando i risultati ma cliccando su OK) e come vedi sono usciti i risultati poi da te postati. Forse non hai cliccato su Univoco? Se il metodo con l'operatore SE() funziona deve funzionare anche quello. Comunque lo posto anche per condividere più opzioni. Oggi non credo di farecela ma, come dici giustamente tu, mi piace usare la testa quando c'è un problema, anche se non è il mio. Perchè comunque mi serve come bagaglio tecnico e per non far assopire i neuroni.
Bella discussione!

:bai

iaia
02-03-13, 22: 14
Va bene, grazie. Io solo mi sento in difetto perché ti faccio rimanere male non dandoti la soddisfazione che meriti per l'impegno.
A me scompaiono tutti i dati, mi resta solo il nome del campo!

Però ci riprovo. Proverò mettendo una sola colonna di dati

Kirk78
02-03-13, 22: 47
Ti senti in difetto perchè? Io ti sto aiutando, e anche tutti gli utenti CT e i nostri visitatori CT, per condividere la mia esperienza come è da tradizione e motto di CT: Difficile non è sapere, ma condividere ciò che si sa
La soddisfazione non esiste quì su CT. E' il bene comune di CT che è fondamentale. Nessuno vuole soddisfazione, almeno io la penso così, ma semplicemente è bello essere CT, come era bello essere P2P Forum Italia - Linux@P2P Forum Italia (http://linux.collectiontricks.it/wiki/P2P_Forum_Italia)

Se riesco ti faccio anche un video con i passaggi ma forse non hai inserito i nomi dei campi alla prima riga A. Tutti devono imparare, anche io che ho, una certa età.

Il filtro funziona anche per tante colonne. Importante è sapere che "Univoco" è un termine assoluto quindi "Pippo" è diverso da "pippo" con la p minusola. E "pippo " è diverso da "pippo" senza uno spazio davanti.

E' per questo che voglio, per te e per CT, fare anche una macro che pensi anche a queste differenze. E' solo il tempo che mi manca.

:bai

iaia
02-03-13, 23: 37
Avrete le righe non duplicate nel secondo foglio Risultato http://images.collectiontricks.it/images/38682205375248952454.jpg (http://images.collectiontricks.it/)

Scusa se te lo dico, ma non ha funzionato nemmeno a te
E io ci sono arrivata solo adesso.
Guardavo la prima cattura e non questa del risultato.
Guarda bene: i dati doppi (qui l'unico dato doppio è la seconda A) non sono stati cancellati: ABCABE nel foglio dati, ABCABE nel foglio risultati.
Io dovrei ottenere ABCBE.
A B C E perchè sono persone diverse, B perché anche se ha lo stesso nome e lo stesso indirizzo ha un numero di telefono diverso e si dovrà capire se va sostituito o aggiunto.

Andy86
03-03-13, 12: 43
:bai

Già, purtroppo quel filtro non ha un opzione che consenta di verificare se il campo è diverso dal contenuto di una o più celle, ma solo se è diverso da un dato valore... sicuramente sarebbe stato più facile che fare una macro (tra l'altro il linguaggio macro di open/libreoffice non l'ho ancora studiato... :ehmm).

Visto che quello che tu vuoi fare alla fine è un database, hai pensato di gestirlo con base (versione open/libreoffice di access) che è apposito per i database?
Mi sembra che si possano creare delle query di unione impostando le condizioni per unire il database... però forse bisogna sempre buttare giù del codice. :m:

iaia
03-03-13, 14: 11
Non credo nemmeno di averlo scaricato. :ehmm
Dai, sono già stata fin troppo fortunata ad avere trovato quel procedimento, non sfidiamo oltre la sorte! :ghgh

Andy86
03-03-13, 16: 27
Parlavo di questo:

2400

Se hai installato libreoffice c'è l'hai lì.

iaia
03-03-13, 17: 45
Non faccio mai installazioni standard :ohoh
Volevo escludere anche Draw e impress, che non ho mai aperto.


http://images.collectiontricks.it/images/38302173287263785837.png
Ti ringrazio, perché ho scoperto di avere ancora open office, che credevo di avere eliminato.

Andy86
03-03-13, 20: 20
Non faccio mai installazioni standard :ohoh

Anch'io selezione sempre ciò che installo (ottima pratica per evitare fastidiosi orpelli pubblicitari come le solite toolbar), però i programmi li metto sempre al completo per non ritrovarmi a ripetere l'installazione una seconda volta. :sisi

Kirk78
05-03-13, 17: 10
Già, purtroppo quel filtro non ha un opzione che consenta di verificare se il campo è diverso dal contenuto di una o più celle, ma solo se è diverso da un dato valore

Scusa se te lo dico, ma non ha funzionato nemmeno a te
Che sciocco... mi sono dimenticato di togliere Mantieni criteri :ehmm provate e funziona. Scusatemi... è la stanchezza....

:bai

P.S. non mi sono dimenticato della macro, ma fortunatamente ho del lavoro da fare e quindi anche questo mese si mangia :sisi ma il tempo per il nostro CT non è tantissimo