[Risolto] Macro o formula somma colore

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Westham
Messaggi: 55
Iscritto il: lunedì 10 aprile 2023, 15:54

[Risolto] Macro o formula somma colore

Messaggio da Westham »

Buongiorno. Pongo alla vostra gentile attenzione un problema che non so se si possa risolvere tramite una macro o una semplice formula. Si tratta in pratica di contare entro un determinato range il numero delle celle (quante di esse) hanno lo stesso colore (nel caso specifico il giallo). Nel file d'esempio in allegato,ho inserito una macro ma sul totale in C1 mi dà 0 (zero). Questa è la macro (errata). Una buona giornata

REM ***** BASIC *****

Sub Module1
oRange=ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("A1:A9")
somma=0
For i=0 To oRange.Rows.Count-1
oCosa=Orange.getCellByPosition(0,i)
If RGB(255,255,0)=oCosa.CellBackColor then
somma=somma+oCosa.Value
End If
Next
ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C1").Value=somma
End Sub
Allegati
macro somma colore.ods
(9.68 KiB) Scaricato 49 volte
Ultima modifica di Westham il giovedì 8 giugno 2023, 18:10, modificato 3 volte in totale.
Libre Office 7.3.2.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro o formula somma colore

Messaggio da unlucky83 »

Ciao
la macro che hai scritto ti da la somma dei valori delle celle con sfondo giallo. infatti popolando l'area A1:A9 con numeri esce la somma che è diversa da zero.
Se vuoi solo contare le celle con sfondo giallo ti basta sostituire

Codice: Seleziona tutto

somma=somma+oCosa.Value
con

Codice: Seleziona tutto

somma=somma+1
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
Westham
Messaggi: 55
Iscritto il: lunedì 10 aprile 2023, 15:54

Re: Macro o formula somma colore

Messaggio da Westham »

Grazie mille Unlucky. Funziona. Ancora una cosa per favore : oltre al valore del colore giallo,volessi aggiungere in C2 la quantità del verde,sempre nella colonna da A1 a A9 che in questo caso ho leggermente modificato (come vedi nel file ci sono ora 5 celle in giallo e 4 verdi),cosa devo variare nella macro ? Tra l'altro in Libre Office non riesco a combinare l'RGB esatto del verde. So che esso corrisponde a 0-255-0 ma in Libre Office ci sono....50 tipi di verde e non riesco ad azzeccare quello giusto.....
Allegati
macro somma colore esempio 2.ods
(10.04 KiB) Scaricato 47 volte
Libre Office 7.3.2.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro o formula somma colore

Messaggio da unlucky83 »

Partiamo dall'assegnazione del colore in libreoffice. Nell'immagine seguente puoi vedere il menu a tendina che si apre quando si clicca sull'icona "colore di sfondo"
Schermata del 2023-06-08 14-39-58.png
Schermata del 2023-06-08 14-39-58.png (63.31 KiB) Visto 612 volte
Se selezioni il colore personalizzato puoi impostare il colore assegnando la numerazione RGB.

Una leggera modifica alla tua macro può essere:

Codice: Seleziona tutto

Sub Module1
oRange=ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("A1:A9")
somma1=0
somma2=0
For i=0 To oRange.Rows.Count-1
oCosa=Orange.getCellByPosition(0,i)
	If RGB(255,255,0)=oCosa.CellBackColor then
		somma1=somma1+1
	ElseIf RGB(0,255,0)=oCosa.CellBackColor then
		somma2=somma2+1
	End If
Next
ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C1").Value=somma1
ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C2").Value=somma2
End Sub
Io però suggerisco questa macro che preleva il colore della cella C1 e C2 e tramite i colori di queste due celle conta le celle che hanno lo stesso sfondo.

Codice: Seleziona tutto

Sub Contacolore
oRange=ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("A1:A9")
RGB1=ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C1").CellBackColor
RGB2=ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C2").CellBackColor
somma1=0
somma2=0
For i=0 To oRange.Rows.Count-1
oCosa=Orange.getCellByPosition(0,i)
	If RGB1=oCosa.CellBackColor then
		somma1=somma1+1
	ElseIf RGB2=oCosa.CellBackColor then
		somma2=somma2+1
	End If
Next
ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C1").Value=somma1
ThisComponent.Sheets.getbyname("foglio1").getcellrangebyname("C2").Value=somma2
End Sub
Allego file con quest'ultima macro associata all'avento.
Allegati
macro somma colore esempio 2.ods
(9.13 KiB) Scaricato 44 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
Westham
Messaggi: 55
Iscritto il: lunedì 10 aprile 2023, 15:54

Re: Macro o formula somma colore

Messaggio da Westham »

Perfetto. Funziona tutto. Grazie mille
Libre Office 7.3.2.2
Rispondi