[Risolto] «Espandere» una tabella... [titolo troncato]

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Humphr3y
Messaggi: 58
Iscritto il: mercoledì 4 dicembre 2013, 11:21
Contatta:

[Risolto] «Espandere» una tabella... [titolo troncato]

Messaggio da Humphr3y »

Salve, eccomi di nuovo ad annoiare.

Premessa: probabilmente il titolo del thread è fuorviante. Proverò a spiegarmi.

Mi hanno affibbiato in ufficio un corposo file csv contenente il dump di una tabella di database. Ogni voce ha un "titolo" e diverse sottovoci (chiamiamole paragrafi) ad essa appartenenti.

Quello che dovrei ottenere è una tabella di due sole colonne, in cui ogni singolo paragrafo occupa una riga a sé - la cui cella A contiene il "titolo" della voce di provenienza. Ogni riga un "titolo" e un solo paragrafo. I duplicati sono i benvenuti anche perché uno dei lavori successivi (se mai sarà possibile arrivarci, failure is actually an option in questo caso) comprenderà il sapere non solo quante volte, ma anche in quali specifiche voci ogni paragrafo compare o è comparso; e semmai se ne riparlerebbe qui, mi sa...

Purtroppo non posso agire a monte: nella tabella del database originario, i paragrafi provengono da campi testo originariamente unici, che ho già faticato parecchio a scorporare per ottenere un paragrafo per ogni cella (per capirsi, facendo riferimento al file allegato: il contenuto della riga 10 nel database originario è: prima cella="Capitolo 5"; seconda cella="Paragrafo 1 Paragrafo 2 Paragrafo 3 Paragrafo 4 Paragrafo 5". Quello che sono riuscito ad ottenere finora è di dividere la seconda cella in cinque).

Domanda: devo rassegnarmi a fare tutto a mano (quindi ad abbandonare il tentativo, dconsiderato il numero di dati), o esiste una qualche maniera per automatizzare la cosa?

Nel file di esempio le righe da 1 a 8 mostrano come dovrebbe risultare la tabella, le successive mostrano come esse sono "prima della cura".

Grazie come sempre a tutti.
Allegati
esempio.ods
(8.7 KiB) Scaricato 142 volte
Ultima modifica di Humphr3y il lunedì 30 marzo 2015, 10:35, modificato 1 volta in totale.
OpenOffice 4.1.5 su Windows 10 e MacOS X 10.11.6
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da unlucky83 »

Humphr3y ha scritto:nella tabella del database originario, i paragrafi provengono da campi testo originariamente unici, che ho già faticato parecchio a scorporare per ottenere un paragrafo per ogni cella (per capirsi, facendo riferimento al file allegato: il contenuto della riga 10 nel database originario è: prima cella="Capitolo 5"; seconda cella="Paragrafo 1 Paragrafo 2 Paragrafo 3 Paragrafo 4 Paragrafo 5". Quello che sono riuscito ad ottenere finora è di dividere la seconda cella in cinque).
Quindi in realtà, il file csv presenta due sole colonne:
colonna A i capitoli
Colonna B tutti i paragrafi sotto ciascun capitolo, separati da uno spazio (o un trattino, o altro)

La soluzione potrebbe rivelarsi più semplice di quello che pensi con l'utilizzo di una macro, partendo proprio da questa situazione.
La macro effettua un ciclo di lettura sulle righe, legge il valore nella colonna A, legge il valore nella colonna B e quest'ultimo lo "splitta".
Tramite un contatore scrive in altre due colonne il testo come lo desideri tu.

Vedi allegato
Allegati
esempio.ods
(36.85 KiB) Scaricato 107 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Humphr3y
Messaggi: 58
Iscritto il: mercoledì 4 dicembre 2013, 11:21
Contatta:

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da Humphr3y »

unlucky83 ha scritto:Quindi in realtà, il file csv presenta due sole colonne:
colonna A i capitoli
Colonna B tutti i paragrafi sotto ciascun capitolo, separati da uno spazio (o un trattino, o altro)
Eh, in realtà no, unlucky83. La colonna B contiene sì tutti i paragrafi raccolti sotto ciascun capitolo, ma come dicevo i campi originari erano di tipo testo: quindi quei "paragrafi" sono delle lunghe stringhe di testo. Diciamo che quello che dovrei riuscire ad estrarre (e che finora sono stato semplicemente in grado di isolare tra loro) sono le frasi contenenti le "parole chiave" che qui per comodità ho chiamato "paragrafi" (e non è esattamente corretto nemmeno "parole chiave"). Però si tratta ancora non di "dati puri" ma di testi contenenti parole.

Provo a spiegarmi.

Mettiamo il caso che la colonna B di "Capitolo 385" dica: "L'affascinante mistero delle maniglie a molla|sembra riallacciarsi per qualche strano meccanismo alle vicende delle ringhiere elettriche.|Ne parlano con noi il presidente dei Marciapiedi Rosa|e gli amici Tabaccai Addormentati, in una pausa dell'incontro di palla-termosifone". Il carattere che "separa" i vari paragrafi è "|", e i paragrafi estrapolati sarebbero "maniglie a molla", "ringhiere elettriche", "marciapiedi rosa", "palla-termosifone". Considerando che un elenco approssimativo dei paragrafi, se non mi sbaglio di tanto a contare, comprenderebbe al momento quasi un migliaio di voci diverse a volte anche solo di poco ("maniglie" semplici, "marciapiedi rosa chiaro" e "palla-termosifone individuale", tanto per dirne tre) mi chiedo come si possa agire via macro.

E aggiungo, ahimè: non tutte le righe di quella tabella separano tra loro i vari paragrafi col "|". Ma quella è minoranza (diciamo approssimativamente 1/10 del totale), e sarei disposto anche a vedermela a mano.
OpenOffice 4.1.5 su Windows 10 e MacOS X 10.11.6
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da unlucky83 »

Ma te sei riuscito a separare le voci dei paragrafi come? uno alla volta a mano?

hai un migliaio di voci di paragrafo per alcuni capitoli? Quindi hai ottenuto migliaia di colonne per ciascun paragrafo?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Humphr3y
Messaggi: 58
Iscritto il: mercoledì 4 dicembre 2013, 11:21
Contatta:

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da Humphr3y »

Nell'ordine:

- No, agendo via editor testi ho sostituito a "|" una tabulazione, e vualà. Mi rimangono quindi, attualmente, delle frasi contenenti i "nomi" dei vari paragrafi, ma sarebbe un problema minore.

- Il computo di questi paragrafi è una cosa di cui ho iniziato, con altri mezzi, a occuparmi tempo fa, poco per volta a intervalli regolari. E finora ho un elenco di circa ottocento nomi. Nella tabella che ho tra le mani, che è quella generale globale mondiale da quando esiste l'Esistenza, ce ne sono verosimilmente altre. Le colonne per ciascun paragrafo al massimo saranno sei o sette. La tabella ha un paio di migliaia di righe. E i "nomi" dei paragrafi sono sepolti tra le parole.

Ripeto: failure IS an option. :) Intanto grazie per la consueta disponibilità.
OpenOffice 4.1.5 su Windows 10 e MacOS X 10.11.6
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da unlucky83 »

Dato che ho un pò di difficoltà a capire la riorganizzazione che devi fare, faccio un passo indietro e ti propongo una soluzione per l'esempio iniziale che hai fatto

In allegato presta attenzione al primo e al terzo foglio
La macro che avvii cliccando sul pulsante del primo foglio opera così:
legge a partire da A1
verifica che il testo sia diverso da VUOTO
cicla sulle colonne adiacenti arrestandosi quando trova una cella vuota
mano mano riporta sul terzo foglio la coppia Capitolo e Paragrafo
termina quando l'elenco della colonna A incontra una cella vuota
Allegati
esempio.ods
(39.18 KiB) Scaricato 118 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Humphr3y
Messaggi: 58
Iscritto il: mercoledì 4 dicembre 2013, 11:21
Contatta:

Re: «Espandere» una tabella spalmandola su due sole colonne

Messaggio da Humphr3y »

Fantastico! :bravo:

Grazie millemila!
OpenOffice 4.1.5 su Windows 10 e MacOS X 10.11.6
Rispondi