Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

somma condizionata a colore celle

136 views
Skip to first unread message

prapra

unread,
Nov 20, 2008, 11:01:09 AM11/20/08
to
Ciao, penso di essermi infilato in un pasticcio... chi mi aiuta?
Vorrei fare una somma di quei soli valori della colonna B che abbiano
contemporaneamente in tutte e tre le celle A, C, E della stessa riga
un riempimento in giallo (colorindex = 36). Come, nell'esempio,
sommare solo i valori di B1 e B3 perché nell riga 2 alla cella E2 non
c'è il colore giallo. Non posso usare una lettera o un valore nelle
celle colorate perché c'è un valore (prezzo unitario) che mi genera il
valore nella colonna successiva, e non vorrei inserire delle colonne
di "appoggio" fra le due.
Insomma vorrei scrivere qualcosa del tipo:
somma i valori fra B1:Bn che abbiano il colore di riempimento giallo
nelle celle A, C e D della riga corrispondente e scrivili nella cella
B.... .
Ho provato ad adattare varie macro basate su Interior.ColorIndex, ma
non riesco a toglierci le gambe e mi sono arreso.

| A | B | C | D | E | F |
1 | giallo | 12 | giallo | 6 | giallo | 9 |
2 | giallo | 2 | giallo | 53 | | 3 |
n | giallo | 20 | giallo | 12 | giallo | 21 |
... | | 32 |

grazie

Mauro Gamberini

unread,
Nov 20, 2008, 11:26:27 AM11/20/08
to
Ciao, penso di essermi infilato in un pasticcio... chi mi aiuta?
Vorrei fare una somma di quei soli valori della colonna B che abbiano
contemporaneamente in tutte e tre le celle A, C, E della stessa riga
un riempimento in giallo (colorindex = 36). Come, nell'esempio,
sommare solo i valori di B1 e B3 perché nell riga 2 alla cella E2 non
c'è il colore giallo. Non posso usare una lettera o un valore nelle
celle colorate perché c'è un valore (prezzo unitario) che mi genera il
valore nella colonna successiva, e non vorrei inserire delle colonne
di "appoggio" fra le due.
*******************************************************

Capito poco poco.

Prova:

Public Sub m()

Dim sh As Worksheet
Dim c As Range
Dim rng As Range
Dim lCont As Long
Dim lng As Long
Dim dTot As Double
Dim lUltRiga As Long

dTot = 0
lCont = 0
Set sh = Worksheets("Foglio1")

With sh
lUltRiga = _
.Range("B" & _
Rows.Count).End(xlUp).Row
For lng = 1 To lUltRiga
Set rng = _
.Range("A" & lng & ":E" & lng)
For Each c In rng
If c.Interior.ColorIndex = _
6 Then
lCont = lCont + 1
End If
Next
If lCont = 3 Then
dTot = dTot + .Cells(lng, 2).Value
End If
lCont = 0
Next

.Range("B" & lUltRiga + 1).Value = dTot

End With

Set c = Nothing
Set rng = Nothing
Set sh = Nothing

End Sub

Non testata.
Non funziona se il colore è dato da una
formattazione condizionale.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/


prapra

unread,
Nov 20, 2008, 11:49:26 AM11/20/08
to
On 20 Nov, 17:26, "Mauro Gamberini"

Grande! funziona perfettamente.
Grazie
prapra

0 new messages