Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Test the color of a cell

Hi,

I would like to make a SUMIF on cells formatted is some ways (font,
background color, character color, ...)

So it would only sum the cells that are written in dark blue for example.

I hav searched but didn't find any function to test that, but I know there
should be one because I can make a 'FIND' on those cells.

Of course I'll have to know the color codes or names ..

Thanks for your help,

Xavier


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,236
Default Test the color of a cell

Chip Pearson has a good page for this:
http://www.cpearson.com/excel/colors.htm


--
Rob van Gelder - http://www.vangelder.co.nz/excel


"Xavier" wrote in message
...
Hi,

I would like to make a SUMIF on cells formatted is some ways (font,
background color, character color, ...)

So it would only sum the cells that are written in dark blue for example.

I hav searched but didn't find any function to test that, but I know there
should be one because I can make a 'FIND' on those cells.

Of course I'll have to know the color codes or names ..

Thanks for your help,

Xavier




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default Test the color of a cell

Here's my standard posting on this question re colour.

Counting coloured cells, either cell colour or font colour, is easily
achieved with the function presented at the foot of this message. The
function has been specifically designed to return an array of colorindex
values that can be used in standard worksheet functions, such as SUM. In
reality, it is best served by the SUMPRODUCT function to count the instances
of a particular colour, using the following technique(s).

=SUMPRODUCT(--(ColorIndex(A1:A100)=3))
counts all red cells (background color) within the range A1:A100

or

=SUMPRODUCT(--(ColorIndex(A1:A100,TRUE)=3))
counts all red cells (font color) within the range A1:A100

To get the colorindex of a specific cell, simply use
=ColorIndex(A1)

As well as counting all cells with a particular colorindex value, it is
possible to use the colour of a cell as the comparison, like this
=SUMPRODUCT(--(ColorIndex(A1:A100)=ColorIndex(A1)))

In addition, the function can be used to sort a range by its colour. Simply
add a 'helper' column next to the column of colours, and use the ColorIndex
to determine the original cell colour, and then sort both columns (and any
other appropriate columns), using the newly added 'helper' column as the key
range. Custom orders can be managed, but these would have to be defined
using the appropriate colorindex, there are no implicit colour names, such
as Red or Blue, that can be used

Adapt this to your requirements

------

'---------------------------------------------------------------------
Function ColorIndex(rng As Range, _
Optional text As Boolean = False) As Variant
'---------------------------------------------------------------------
' Function: Returns the colorindex of the supplied range
' Synopsis: Initially, gets a colorindex value for black and white from
' the activeworkbook colour palette
' Then works through each cell in the supplied range and
' determines the colorindex, and adds to array
' Finishes by returning acumulated array
' Variations: Determines cell colour (interior) or text colour (font)
' Default is cell colour
' Author: Bob Phillips
' Additions for ranges suggested by Harlan Grove
' Constraints: Does not count colours set by conditional formatting
'---------------------------------------------------------------------
Dim cell As Range, row As Range
Dim i As Long, j As Long
Dim iWhite As Long, iBlack As Long
Dim aryColours As Variant

If rng.Areas.Count 1 Then
ColorIndex = CVErr(xlErrValue)
Exit Function
End If

iWhite = WhiteColorindex(rng.Worksheet.Parent)
iBlack = BlackColorindex(rng.Worksheet.Parent)

If rng.Cells.Count = 1 Then
If text Then
aryColours = DecodeColorIndex(rng, True, iBlack)
Else
aryColours = DecodeColorIndex(rng, False, iWhite)
End If

Else
aryColours = rng.Value
i = 0

For Each row In rng.Rows
i = i + 1
j = 0

For Each cell In row.Cells
j = j + 1

If text Then
aryColours(i, j) = _
DecodeColorIndex(cell,True,iBlack)
Else
aryColours(i, j) = _
DecodeColorIndex(cell,False,iWhite)
End If

Next cell

Next row

End If

ColorIndex = aryColours

End Function

'---------------------------------------------------------------------
Private Function WhiteColorindex(oWB As Workbook)
'---------------------------------------------------------------------
Dim iPalette As Long
WhiteColorindex = 0
For iPalette = 1 To 56
If oWB.Colors(iPalette) = &HFFFFFF Then
WhiteColorindex = iPalette
Exit Function
End If
Next iPalette
End Function

'---------------------------------------------------------------------
Private Function BlackColorindex(oWB As Workbook)
'---------------------------------------------------------------------
Dim iPalette As Long
BlackColorindex = 0
For iPalette = 1 To 56
If oWB.Colors(iPalette) = &H0 Then
BlackColorindex = iPalette
Exit Function
End If
Next iPalette
End Function

'---------------------------------------------------------------------
Private Function DecodeColorIndex(rng As Range, _
text As Boolean, _
idx As Long)
'---------------------------------------------------------------------
Dim iColor As Long
If text Then
iColor = rng.font.ColorIndex
Else
iColor = rng.Interior.ColorIndex
End If
If iColor < 0 Then
iColor = idx
End If
DecodeColorIndex = iColor
End Function

'---------------------------------------------------------------------
' End of ColorIndex
'-------------------------------------------------



--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Xavier" wrote in message
...
Hi,

I would like to make a SUMIF on cells formatted is some ways (font,
background color, character color, ...)

So it would only sum the cells that are written in dark blue for example.

I hav searched but didn't find any function to test that, but I know there
should be one because I can make a 'FIND' on those cells.

Of course I'll have to know the color codes or names ..

Thanks for your help,

Xavier




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
TEST CELL COLOR MrBill Excel Discussion (Misc queries) 1 April 29th 10 02:56 AM
Can I create an "IF" function using cell color as a logical test? JessLynn Excel Worksheet Functions 1 June 25th 08 08:09 PM
Test cell interior color by worksheet function? Skimmer Excel Worksheet Functions 7 September 4th 07 09:40 PM
If statement to test font color Gary Excel Discussion (Misc queries) 5 May 24th 06 09:09 PM
Logical Test comparison using cell color chamuko Excel Discussion (Misc queries) 2 November 9th 05 03:09 AM


All times are GMT +1. The time now is 12:25 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"