Macro per contare celle in base al colore di sfondo

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Etzel
Messaggi: 5
Iscritto il: lunedì 11 settembre 2017, 5:10

Macro per contare celle in base al colore di sfondo

Messaggio da Etzel »

Ciao a tutti. Sono abbastanza pratico coi fogli di calcolo, ma ho zero pratica di macro, quindi chiedo il vostro aiuto.
Avrei bisogno di una macro che mi permetta di contare le celle di una selezione che abbiano un determinato colore di sfondo. Ad esempio quante celle dallo sfondo verde possiedo su una determinata riga. Cercando in giro si trovano tante macro per Excel (e infatti anni fa quando usavo Excel ricordo di aver implementato una formula del genere), ma non riesco a trovare nulla per Calc. :(
Spero possiate aiutarmi!
Apache OpenOffice 4.1.2 - Windows 10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per contare celle in base al colore di sfondo

Messaggio da charlie »

Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro per contare celle in base al colore di sfondo

Messaggio da patel »

tu selezioni le celle e vuoi sapere quante di queste hanno il colore dato da cosa ?
allega un file di esempio oppure prova questa

Codice: Seleziona tutto

sub contacolori
doc=thiscomponent
Sh = Doc.Sheets(0)
colore = Sh.getCellRangeByName("K2").CellBackColor ' <<< colore da contare nella cella K2
oSelect=doc.CurrentSelection
oColumn=oselect.Columns
oRow=oSelect.Rows
count = 0
For nc= 0 To oColumn.getCount-1
  For nr = 0 To oRow.getCount-1
    if oselect.getCellByPosition (nc,nr).CellBackColor = colore then count = count + 1
  Next nr
Next nc
print count
End Sub
-------------------
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
Etzel
Messaggi: 5
Iscritto il: lunedì 11 settembre 2017, 5:10

Re: Macro per contare celle in base al colore di sfondo

Messaggio da Etzel »

charlie ha scritto:Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Buon proseguimento.
Grazie! :D
Apache OpenOffice 4.1.2 - Windows 10
Etzel
Messaggi: 5
Iscritto il: lunedì 11 settembre 2017, 5:10

Re: Macro per contare celle in base al colore di sfondo

Messaggio da Etzel »

patel ha scritto:tu selezioni le celle e vuoi sapere quante di queste hanno il colore dato da cosa ?
Ecco, il problema è questo. Il colore di sfondo non è determinato da una formattazione condizionale nè da alcun valore in particolare, ma lo inserisco io manualmente. In sintesi in questo foglio ho una serie di valori numerici relativi a vari oggetti; con il colore di sfondo io evidenzio gli oggetti effettivamente utilizzati. Questo perchè è un dato che mi serve a colpo d'occhio e il foglio di lavoro è già strapieno di dati... non voglio aggiungere un'altra casella per ogni oggetto solo per indicarne l'utilizzo o meno, anche se sarebbe il sistema più semplice. So che è un modo poco ortodosso di lavorare coi fogli di calcolo, ma in questo caso mi facilita davvero tanto le cose e mi permette di avere un foglio dimezzato in larghezza. Mi serve però un conteggio automatico degli utilizzi totali che, essendo indicati da un colore di sfondo, non posso fare con le formule standard.

In passato avevo trovato una macro che mi permetteva di aggiungere una formula nel foglio. Tale formula era esattamente una formula "CONTA", ma basata sul colore di sfondo: aveva come parametri il range di ricerca e il colore da cercare e mi restituiva, nella casella in cui la immettevo, il conteggio di tutti i valori con lo sfondo verde nelle caselle/range da me selezionato. Quindi, in definitiva, mi restituiva il numero di oggetti utilizzati, che io in precedenza avevo manualmente evidenziato in verde.

Spero di essermi spiegato bene.

EDIT: ho aggiunto un file di esempio per maggior chiarezza. Nella colonna B vorrei il numero di volte che la riga in questione è colorata di verde. Ad esempio su "carota" vorrei il valore 4, dato che il suddetto oggetto è stato utilizzato (colorato di verde) 4 volte: a gennaio, marzo, aprile e agosto.
Allegati
esempio.ods
(10.25 KiB) Scaricato 376 volte
Apache OpenOffice 4.1.2 - Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro per contare celle in base al colore di sfondo

Messaggio da patel »

Allora perché hai parlato di selezione nel primo post ? mi sembra che tu abbia cambiato le carte in tavola, comunque prova questa macro.

Codice: Seleziona tutto

Sub contacolori
doc=thiscomponent
Sh = Doc.Sheets(0)
colore = 52224
for riga = 1 to 4
  count = 0
  For colonna = 2 To 13
    if sh.getCellByPosition (colonna,riga).CellBackColor = colore then count = count + 1
  Next
  sh.getCellByPosition (1,riga).Value = count
Next

End sub
-------------------
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
Etzel
Messaggi: 5
Iscritto il: lunedì 11 settembre 2017, 5:10

Re: Macro per contare celle in base al colore di sfondo

Messaggio da Etzel »

patel ha scritto:Allora perché hai parlato di selezione nel primo post ? mi sembra che tu abbia cambiato le carte in tavola, comunque prova questa macro.
Perdonami, mi son reso conto dopo di essermi spiegato male, ma l'intenzione era questa dall'inizio. Nel primo messaggio son stato troppo sintetico e vago.

Grazie mille per la macro! :D Noto però che non si aggiorna automaticamente nel caso io colori o decolori nuove caselle. Non è un dramma rieseguirla e già così mi hai salvato alla grande la situazione, ma c'è per caso modo di ricavarne una funzione vera e propria che possa poi piazzare a piacimento nel foglio e magari autoaggiornabile? So che in Excel è/era possibile creare vere e proprie formule via macro (che è l'unico utilizzo che ne avevo fatto in passato), ma non so se per OpenOffice esista la stessa possibilità.
Apache OpenOffice 4.1.2 - Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro per contare celle in base al colore di sfondo

Messaggio da patel »

la possibilità esiste sicuramente, per ora ho seguito la via più facile, attendi altri interventi
Cambia il titolo del primo post in UDF/Macro per contare celle in base al colore di sfondo
-------------------
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
Rispondi