[Risolto] Riconoscimento Colore Sfondo

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

[Risolto] Riconoscimento Colore Sfondo

Messaggio da Charc7is »

Devo prendere dei file con dei dati e metterli in un ordine totalmente diverso
con un po' di funzioni riesco a fare quasi tutto
il mio più grande problema è che alcune informazioni sono state messe cambiando lo sfondo della cella

io devo prendere le celle con lo sfondo in giallo e scrivere in un'altra cella "Giallo"

C'è un modo per riconoscere la formattazione di una cella? e quindi poter mettere un valore ad un'altra cella che "guarda" la cella con uno sfondo? può restituirmi un numero o qualunque cosa io poi vedo di metterle in ordine per tipologia e immettere il dato che mi serve

Allego un esempio di quello che devo fare
a sinistra il file dal quale parto
a destra come devo consegnare i dati

sono a conoscenza che le ore siano numeri, ma tali sono e tali devono rimanere
Allegati
Richiesta riconoscimento formattazione.ods
(15.93 KiB) Scaricato 247 volte
Ultima modifica di Charc7is il lunedì 24 giugno 2019, 10:44, modificato 1 volta in totale.
OpenOffice 4.1.1 su Windows 8
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

un'idea potrebbe essere convertirlo in HTML
<TD STYLE="border-top: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" ALIGN=CENTER BGCOLOR="#FFFF00" SDVAL="8,56" SDNUM="1040;0;00,00"><FONT FACE="Geneva">08,56</FONT></TD>
<TD STYLE="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" ALIGN=CENTER BGCOLOR="#66CCFF" SDVAL="13,56" SDNUM="1040;0;00,00"><FONT FACE="Geneva">13,56</FONT></TD>

è solo un'idea non saprei come sfruttarla
OpenOffice 4.1.1 su Windows 8
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Riconoscimento formattazione

Messaggio da patel »

Charc7is ha scritto:Devo prendere dei file con dei dati e metterli in un ordine totalmente diverso
con un po' di funzioni riesco a fare quasi tutto
non vedo neanche una funzione nel tuo esempio, comunque penso che per riconoscere il colore di sfondo occorra una macro
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

patel ha scritto:non vedo neanche una funzione nel tuo esempio, comunque penso che per riconoscere il colore di sfondo occorra una macro
Qui ho fatto a mano, perché per farlo uso prima funzioni come CONCATENA ma poi uso il blocconote e parti a mano permettere a posto
il mio punto è che il resto una soluzione la trovo, per far riconoscere il fondo e per esempio farli mettere in ordine per colore (e poi a fianco ad ogni colore mettere io a mano ciò che mi serve) non saprei come fare
OpenOffice 4.1.1 su Windows 8
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Riconoscimento formattazione

Messaggio da patel »

come ti ho detto occorre una macro, per farla occorre un file significativo e spiegazioni dettagliate sul criterio di costruzione della tabella
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riconoscimento formattazione

Messaggio da Gaetanopr »

La tabella la prelevi già cosi
Charc7is ha scritto:Devo prendere dei file con dei dati e metterli in un ordine totalmente diverso
con un po' di funzioni riesco a fare quasi tutto
Dovresti allegare quanto da te fatto, quindi quello che riesci a fare da solo, perchè se il problema è lo sfondo della cella questo si risolve facilmente.
Se invece dobbiamo partire da zero, devi fare quanto già detto da patel, dovresti dirci se le tabelle hanno tutte la stessa struttura, quindi con la scritta del mese iniziale i giorni nella cella di sotto, 7 righe per tabella la scritta prima e seconda sempre allo stesso posto, questi sono dati fondamentali per la costruzione di una macro che si possa adattare bene, altrimenti si perde solo tempo a scrivere una macro che vada bene solo per l'esempio postato.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Riconoscimento formattazione

Messaggio da patel »

Gaetanopr ha scritto:....perchè se il problema è lo sfondo della cella questo si risolve facilmente......
Come ? sono curioso.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

Gaetanopr ha scritto:se il problema è lo sfondo della cella questo si risolve facilmente
Siccome sono diverse il resto me lo gestisco io a mano, il mio scoglio insormontabile è che non saprei come identificare una cella con lo sfondo giallo al posto di una con lo sfondo azzurro, se avessi la funzione =BACKGROUND(A1) e questo mi restituisce FFFF00 al posto di 00FFFF io poi trovo il modo di trasformare quei codici in "A", "B" o "C"
OpenOffice 4.1.1 su Windows 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riconoscimento formattazione

Messaggio da Gaetanopr »

Charc7is ha scritto:....se avessi la funzione =BACKGROUND(A1) e questo mi restituisce FFFF00 al posto di 00FFFF io poi trovo il modo di trasformare quei codici in "A", "B" o "C"
Possiamo creare una funzione personalizzata come questa

Codice: Seleziona tutto

Function Colore(Col, Riga)
Sh = ThisComponent.CurrentController.ActiveSheet
Colore = Hex(Sh.GetCellByPosition(Col-1, Riga-1).CellBackColor)
End Function
Se vogliamo sapere il codice esadecimale della cella C6 la funzione va inserita in questo modo

Codice: Seleziona tutto

=COLORE(3; RIF.RIGA(A6))
dove il 3 identifica il numero di colonna (C) e RIF.RIGA(A6) la riga 6, si potrebbe scrivere direttamente 6 in questo modo

Codice: Seleziona tutto

=COLORE(3; 6)
ma trascinando la formula in basso questa non si aggiornerebbe come nella versione con RIF.RIGA
Conoscendo i codici dei colori tramite altre funzioni, come il cerca verticale puoi ricavarti il nome dei colori, ma devi costruirti una tabella con le varie colorazioni.
Allego esempio
Allegati
Richiesta riconoscimento formattazione.ods
(17.94 KiB) Scaricato 215 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riconoscimento formattazione

Messaggio da Gaetanopr »

Meglio modificare la macro aggiungendo tra i parametri il numero del foglio, usando CurrentController.ActiveSheet all'apertura del file esce fuori un errore di variabile dell'oggetto non impostata in quanto la funzione va alla ricerca del foglio attivo ancora non caricato e quindi non conosciuto.

Codice: Seleziona tutto

Function Colore(Fg, Col, Riga)
Sh = ThisComponent.Sheets(Fg-1) 'CurrentController.ActiveSheet
Colore = Hex(Sh.GetCellByPosition(Col-1, Riga-1).CellBackColor)
End Function

Codice: Seleziona tutto

=COLORE(1;3; RIF.RIGA(A6))
il primo parametro identifica il numero del foglio1
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

infatti ho anche installato la nuova versione di OpenOffice, ma mi creava ancora problemi, adesso devo capire come modificare una macro (mai usate)
OpenOffice 4.1.1 su Windows 8
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

Gaetanopr ha scritto:

Codice: Seleziona tutto

=COLORE(1;3; RIF.RIGA(A6))
il primo parametro identifica il numero del foglio1
ok sto modificando la macro ma questa parte non la trovo
OpenOffice 4.1.1 su Windows 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riconoscimento formattazione

Messaggio da Gaetanopr »

Certo che non la trovi, trattandosi di una funzione la devi scrivere sulla cella dove vuoi che venga restituito il risultato.
Per funzionare devi abilitare il programma alle macro andando su Strumenti - Opzioni - Sicurezza - Sicurezza delle macro - imposti a medio, ad ogni apertura del file ti comparirà una finestra dove dovrai selezionare il pulsante Abilita macro.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
lucky63
Volontario molto attivo
Volontario molto attivo
Messaggi: 3092
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Riconoscimento formattazione

Messaggio da lucky63 »

Per la definizione del nome della funzione personalizzata usa un nome diverso da "Colore".
Una funzione =COLORE() non è ancora presente in AOo 416 ma è già implementata in LIBREO 624 con altre caratteristiche.
Colore.png
Al posto della parola "Colore" puoi per esempio usare "ColoreSfondoCella".
Charc7is
Messaggi: 40
Iscritto il: martedì 6 agosto 2013, 2:10

Re: Riconoscimento formattazione

Messaggio da Charc7is »

ho seguito i consigli sia di Gaetanopr che ha gettato le basi fondanti che il consiglio di lucky63
la formula adesso è =COLORESFONDO(1;RIF.COLONNA(C6); RIF.RIGA(C6))

come si può vedere il nome non è più semplicemente Colore, ma ColoreSfondo così da non confondersi con possibili nuove formule
ho aggiunto anche Rif.Colonna così da poterlo mettere dove si vuole, ovviamente bisogna cambiare C6 nei due punti con la cella che si vuole controllare e poi copiando la formula senza fare più nulla ^_^

Grazie a tutti
Allegati
Richiesta riconoscimento formattazione Test.ods
(18.5 KiB) Scaricato 150 volte
OpenOffice 4.1.1 su Windows 8
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riconoscimento formattazione

Messaggio da Gaetanopr »

lucky63 ha scritto:Una funzione =COLORE() non è ancora presente in AOo 416 ma è già implementata in LIBREO 624 con altre caratteristiche......
:super: Prima o poi passerò pure io a libreoffice
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi