Newsgroup: it.comp.macintosh
Titolo: [OT]ÊPer esperti NeoOffice/OpenOffice

Ho una mega-tabella da 26000 righe (un prezziario regionale che era in
PDF), dove sono risuscito a suddividere correttametne in colonne dei
testi disposti anche su più righe. Adesso mi manca l'ultima
suddivisione, ovvero se nella colonna O c'è un valore diverso da 0,
nella colonna P voglio il testo della colonna N meno l'ultima parola, e
nella colonna Q voglio quell'ultima parola. Con filemaker userei la
funzione ParoleADestra, ma in NeoOffice non trovo niente di simile... E
non trovo neppure un modo per contare gli spazi a partire da destra...
Qulcuno può aiutarmi?!
-- 
Per rispondere, togliere -NOSPAM- dall'indirizzo.

 Qulcuno puň aiutarmi?!
non sono un esperto di formule di calc (di questo modulo stai
parlando?). sicuramente quello che dici puň essere fatto con una macro
di starbasic. 
-- 
http://www.venerandi.com

Aladino <borgob...@SPAM-alice.it> wrote:

Posso provare ad aiutarti volentieri se dai qualche indicazione di più
sul testo contenuto nella colonna O.
Se ha un solo spazio
 la prima parte la puoi ottenre con qualcosa di simile a
    =LEFT(O*;FIND(O*;" "))
    =RIGHT(O*;LEN(O*)-FIND(O*;" ")-1)
Se hai più parole intervallate da spazi, bisogna aggeggiare di più con
FIND(a;b;c)
Ciao,
    -- L.
-- 
L'unico modo per scoprire i confini del possibile è avventurarsi un
poco oltre, nell'impossibile. (2a legge di Clarke)  //  The only way of
finding the limits of the possible is by going beyond them into the
impossible. (Clarke's 2nd law)                       -- Arthur C. Clarke

 sul testo contenuto nella colonna O.
Nella colonna O c'è un numero, che ho già separato dal resto della
stringa. Il problema è nella colonna N, nella quale ho il resto, ovvero
una descrizione e l'unità di misura del valore nella colonna O. Le celle
possono anche essere vuote, dipende dalle righe, comunque un esempio del
contenuto di una cella in colonna N e' (senza virgolette):
"Puntellazione di travi, rampe scale, solai piani e di copertura fino a
3 m di altezza di puntellazione mq"
Io avrei bisogno di seprare il "mq" dalla restante parte. A prima vista
mi era sembrata una cosa semplice, dopo tutto il lavoro di separa e cuci
fatto sul testo di partenza, in più righe e con codici di lunghezza
differente, derivati da un copia/incolla da PDF. Questo ne è un
spezzone:
01 OPERE PROVVISIONALI 
01.1 PUNTELLAZIONI 
01.1.AB1 PUNTELLAZIONE 
01.1.AB1.01 Puntellazione di strutture orizzontali di qualsiasi tipo, 
con puntelli di acciaio, legname o misti, in opera compreso 
banchine, apparecchi di armo in genere, armo e disarmo, 
collegamenti e fissaggi ad evitare qualsiasi movimento delle 
parti protette. 
01.1.AB1.01.A Puntellazione di travi, rampe scale, solai piani e di
copertura fino a 3 m di altezza di puntellazione m?           16,79 
01.1.AB1.01.B Per ogni metro in più oltre i primi 3 m di altezza di 
puntellazione m?            6,05 
01.1.AB1.02 Puntellazioni di strutture murarie verticali con puntelli in
acciaio, legname o misti, compreso banchine, apparecchi da 
disarmo in genere, sbatacchiature in senso longitudinale e 
trasversale, controventatura in direzione perpendicolare al 
muro servito, compreso armo, disarmo, collegamenti, fissaggi. m?
33,57 
01.1.AB1.03 Esecuzione di banchine e controventature orizzontali di
ritegno...
Io devo portare ogni voce (che possono essere di categoria, gruppo,
ecc... fino alle voci prezzate), individuate da un codice, su una riga,
separare le varie parti del codice, la descrizione, l'unità di misura ed
il prezzo. In pratica lo spezzone sopra dovrebbe diventare:
01| |   |  | |OPERE PROVVISIONALI                          |  |
01|1|   |  | |PUNTELLAZIONI                                |  |
01|1|AB1|  | |PUNTELLAZIONE                                |  |
01|1|AB1|01| |Puntellazione di strutture orizzontali.../cut|  |
01|1|AB1|01|A|Puntellazione di travi, rampe scale, s.../cut|m?|16,79 
01|1|AB1|01|B|Per ogni metro in più oltre i primi 3 .../cut|m?|6,05 
01|1|AB1|02| |Puntellazioni di strutture murarie ver.../cut|m?|33,57 
01|1|AB1|03| |Esecuzione di banchine e controventatu.../cut
L'esempio sopra è da vedersi con caratteri a larghezza fissa; in pratica
ogni "|" individua la fine di un colonna. Ti faccio notare, tra l'altro,
che le voci prezzate non hanno sempre il sottocodice (ma questi sono
problemi miei).
Alla fine sono riuscito a fare quasi tutto, tranne separare l'unità di
misura dal resto della descrizione. Il valore l'ho separato ricercando
almeno 2 spazi, sostituiti con un carattere "|", annullando poi gli
spazi in eccedenza e separando il testo al carattere "|". Con l'unità di
misura non mi è possibile in quanto la stessa è divisa da un solo spazio
(l'ultimo, ma non so come cercare a partire da destra) dal resto della
descrizione.
Tutto questo per dire che non mi pare che la tua soluzione funzioni. Ma
comunque grazie.


 li distribuiscono gratis.
No, la regione passa il PDF. Ci sono software di computazione che danno
lo stesso prezziario nel loro formato, ma bisogna avere il loro
software... E poi per le cosette che devo fare io, mi basta il foglio di
calcolo. Del resto č un prezziario abbastanza sballato, ma č quello che
deve essere usato per le richieste di contributi da parte della regione.


 Io avrei bisogno di seprare il "mq" dalla restante parte.
Ciao, scusa il ritartdo! Mamma Telecom mi ha tagliato fuori.
Se non hai già risolto con FileMaker prova così.
Ipotesi:
    N1 contiene il numero di caratteri delle unità 
       di misura: non dovrebbero are più di due
       caratteri nel simbolo ("mt", "mq" o "mc")
       Inizia con 3, eventualmente sistitiscilo con
       2 o con 4.
       Se sei sicuro del numero che ti interessa, puoi
       inserirlo direttamente nelle formule al posto
       del riferimento alla cella N1
    N3 contiene la stringa da separare
Inserisci due colonne in modo da avere libere le colonne O e P
Estrae la descizione:
      O3  =TRIM(LEFT(N3;FIND(" ";N3;LEN(N3)-N1)))
    TRIM  toglie gli spazi spuri a fine stringa
    FIND  trova la posizione dello spazio nella stringa
          dalla posizione individuata da LEN(N3)-N1
    LEFT  Estrae la porzione di stringa desiderata
          fino alla posizione dell'ultimo spazio
Estrae l'unità di misura:
      P3  =TRIM(RIGHT(N3;LEN(N3)-FIND(" ";N3;LEN(N3)-A1)))
    TRIM  vedi sopra
    FIND  vedi sopra
    RIGHT estrala la porzione di stringa desiderata
          a partire dalla posizione dell'ultimo spazio
Ho fatto un paio di prove e mi sembra funzioni. In caso contrario, fammi
sapere e mandami un esempio delle stringhe che creano difficoltà.


        2 o con 4.
purtroppo è variabile:
mt, mq, cad., a corpo, ecc...
Comunque per il momento ha fatto con filemaker, come dicevo, con estrema
facilità, visto che ci sono funzioni che contano le parole e
restituiscono x parole da destra o da sinistra. Mi sembra strano che con
NeoOffice non si arrivi a fare quella che in apparenza (forse per me che
uso + FileMaker) sembra una cosa banale.
Comunque grazie.


 uso + FileMaker) sembra una cosa banale.
come già ti dissi nel mio primo messaggio basta fare una macro
-- 
http://www.venerandi.com

 come già ti dissi nel mio primo messaggio basta fare una macro
Non ho voglia di studirmi anche il 'linguaggio macro' di NeoOffice :P


 Non ho voglia di studirmi anche il 'linguaggio macro' di NeoOffice :P
ma scherzi, è una figata se hai voglia di perdere tempo e farti del male 
per niente
-- 
http://www.venerandi.com

 per niente
Allora, quasi quasi ci faccio un pensierino... ;-)
