ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   count if font and background color condition is true (https://www.excelbanter.com/excel-worksheet-functions/177426-count-if-font-background-color-condition-true.html)

Ivano

count if font and background color condition is true
 
Hi,
I want to count the number of cells that have the font color in -4105
(autocolor) and a background color of -4142 (no fill). I can't figure out
how to make the code work to count when both conditions are met.

I have found the following code:

Function CountByColor(InRange As Range, _
WhatColorIndex As Integer, _
Optional OfText As Boolean = False) As Long
'
' This function return the number of cells in InRange with
' a background color, or if OfText is True a font color,
' equal to WhatColorIndex.
'
Dim Rng As Range
Application.Volatile True

For Each Rng In InRange.Cells
If OfText = True Then
CountByColor = CountByColor - _
(Rng.Font.ColorIndex = WhatColorIndex)
Else
CountByColor = CountByColor - _
(Rng.Interior.ColorIndex = WhatColorIndex)
End If
Next Rng

End Function



Ivano

count if font and background color condition is true
 
I should also mention that I need my spreadsheet to display all three counts,

1. how many font in autocolor (which is the If statement)
2. how many background in no fill (which is the Else statement)
3. how many have both autocolor and no fill (which what I need and can't
figure out)

Thanks,

"Ivano" wrote:

Hi,
I want to count the number of cells that have the font color in -4105
(autocolor) and a background color of -4142 (no fill). I can't figure out
how to make the code work to count when both conditions are met.

I have found the following code:

Function CountByColor(InRange As Range, _
WhatColorIndex As Integer, _
Optional OfText As Boolean = False) As Long
'
' This function return the number of cells in InRange with
' a background color, or if OfText is True a font color,
' equal to WhatColorIndex.
'
Dim Rng As Range
Application.Volatile True

For Each Rng In InRange.Cells
If OfText = True Then
CountByColor = CountByColor - _
(Rng.Font.ColorIndex = WhatColorIndex)
Else
CountByColor = CountByColor - _
(Rng.Interior.ColorIndex = WhatColorIndex)
End If
Next Rng

End Function



Tom Hutchins

count if font and background color condition is true
 
You'll need a different function to return the count of cells meeting both
conditions.

Public Function CountByColor2(InRange As Range, _
FontColorIndex As Integer, _
FillColorIndex As Integer) As Long
Dim Rng As Range
Application.Volatile True
For Each Rng In InRange.Cells
If (Rng.Font.ColorIndex = FontColorIndex) And _
(Rng.Interior.ColorIndex = FillColorIndex) Then
BothCnt = BothCnt + 1
CountByColor2 = CountByColor2 + 1
End If
Next Rng
End Function

To call it:
=CountByColor2(A1:B11,-4105,-4142)

Hope this helps,

Hutch

"Ivano" wrote:

I should also mention that I need my spreadsheet to display all three counts,

1. how many font in autocolor (which is the If statement)
2. how many background in no fill (which is the Else statement)
3. how many have both autocolor and no fill (which what I need and can't
figure out)

Thanks,

"Ivano" wrote:

Hi,
I want to count the number of cells that have the font color in -4105
(autocolor) and a background color of -4142 (no fill). I can't figure out
how to make the code work to count when both conditions are met.

I have found the following code:

Function CountByColor(InRange As Range, _
WhatColorIndex As Integer, _
Optional OfText As Boolean = False) As Long
'
' This function return the number of cells in InRange with
' a background color, or if OfText is True a font color,
' equal to WhatColorIndex.
'
Dim Rng As Range
Application.Volatile True

For Each Rng In InRange.Cells
If OfText = True Then
CountByColor = CountByColor - _
(Rng.Font.ColorIndex = WhatColorIndex)
Else
CountByColor = CountByColor - _
(Rng.Interior.ColorIndex = WhatColorIndex)
End If
Next Rng

End Function



Ivano

count if font and background color condition is true
 
Hi Tom,
Thanks. It works and has helped

"Tom Hutchins" wrote:

You'll need a different function to return the count of cells meeting both
conditions.

Public Function CountByColor2(InRange As Range, _
FontColorIndex As Integer, _
FillColorIndex As Integer) As Long
Dim Rng As Range
Application.Volatile True
For Each Rng In InRange.Cells
If (Rng.Font.ColorIndex = FontColorIndex) And _
(Rng.Interior.ColorIndex = FillColorIndex) Then
BothCnt = BothCnt + 1
CountByColor2 = CountByColor2 + 1
End If
Next Rng
End Function

To call it:
=CountByColor2(A1:B11,-4105,-4142)

Hope this helps,

Hutch

"Ivano" wrote:

I should also mention that I need my spreadsheet to display all three counts,

1. how many font in autocolor (which is the If statement)
2. how many background in no fill (which is the Else statement)
3. how many have both autocolor and no fill (which what I need and can't
figure out)

Thanks,

"Ivano" wrote:

Hi,
I want to count the number of cells that have the font color in -4105
(autocolor) and a background color of -4142 (no fill). I can't figure out
how to make the code work to count when both conditions are met.

I have found the following code:

Function CountByColor(InRange As Range, _
WhatColorIndex As Integer, _
Optional OfText As Boolean = False) As Long
'
' This function return the number of cells in InRange with
' a background color, or if OfText is True a font color,
' equal to WhatColorIndex.
'
Dim Rng As Range
Application.Volatile True

For Each Rng In InRange.Cells
If OfText = True Then
CountByColor = CountByColor - _
(Rng.Font.ColorIndex = WhatColorIndex)
Else
CountByColor = CountByColor - _
(Rng.Interior.ColorIndex = WhatColorIndex)
End If
Next Rng

End Function




All times are GMT +1. The time now is 01:55 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com