Home |
Search |
Today's Posts |
#1
![]() |
|||
|
|||
![]()
I am using excel 2000
I have used the following Formula to count the number of times that ABC occurs in red text within the listed range, and it works fine =PERSONAL.XLS!CountByColorText($G$4:$R$211,3,TRUE, "ABC") I now want to count the number of times that (F) occurs in red text within the listed range, the difference being that (F) is always only the last three digits in the cell eg ABC (F) I have tried these formulae =PERSONAL.XLS!CountByColorText($G$4:$R$211,3,TRUE, "*(F)*") {=PERSONAL.XLS!CountByColorText(RIGHT($G$4:$R$211, 3),3,TRUE, "(F)")} =SUMPRODUCT(--(NOT(ISERROR(SEARCH("F",$G$4:$R$211))*(PERSONAL.XL S!CountByColorText($G$4:$R$211,3,TRUE))))) None of which gave the correct answer My UDF code is as follows Code: Function CountByColorText(InRange As Range, _ WhatColorIndex As Integer, _ Optional OfText As Boolean = False, _ Optional Str As String = "") As Long Dim Rng As Range Dim CheckStr As Boolean Application.Volatile True For Each Rng In InRange.Cells CheckStr = False If Str = "" _ Or LCase(Rng.Value) = LCase(Str) Then CheckStr = True End If If CheckStr = True Then If OfText = True Then CountByColorText = CountByColorText - _ (Rng.Font.ColorIndex = WhatColorIndex) Else CountByColorText = CountByColorText - _ (Rng.Interior.ColorIndex = WhatColorIndex) End If End If Next Rng End Function__________________ Any help with a formula that will count (F) when it appears as part of the contents of a cell and is red text much appreciated In the Example attached, I want the result in cell d14 to be 1 |
#2
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
I think you're going to have to modify your function to support as much as you
want. For instance, you could use an asterisk for a wildcard "*(F)" to represent ends with "(F)". You could use "*(F)*" for contains "(F)". If you're industrious, you could use use the same "escape sequences" that excel uses: ~* represents an asterisk (not tilde, then wild card) ~? represents a question mark (not tilde, then a single character wild card) ~~ represents a single tilde (no escape sequence) And if you're really industrious, you may want to learn about regular expressions. But if you're only semi-industrious: Option Explicit Function CountByColorText(InRange As Range, _ WhatColorIndex As Integer, _ Optional OfText As Boolean = False, _ Optional Str As String = "") As Long Dim Rng As Range Dim CheckStr As Boolean Dim HasWildCards As Boolean Application.Volatile True HasWildCards = CBool(InStr(1, Str, "*", vbTextCompare) 0) For Each Rng In InRange.Cells CheckStr = False If Str = "" Then CheckStr = True End If If HasWildCards Then If LCase(Rng.Value) Like LCase(Str) Then CheckStr = True End If Else If LCase(Rng.Value) = LCase(Str) Then CheckStr = True End If End If If CheckStr = True Then If OfText = True Then CountByColorText = CountByColorText - _ (Rng.Font.ColorIndex = WhatColorIndex) Else CountByColorText = CountByColorText - _ (Rng.Interior.ColorIndex = WhatColorIndex) End If End If Next Rng End Function ====== Google in the *excel* newsgroups for regular expressions and you'll find lots of hits. Paul S wrote: I am using excel 2000 I have used the following Formula to count the number of times that ABC occurs in red text within the listed range, and it works fine =PERSONAL.XLS!CountByColorText($G$4:$R$211,3,TRUE, "ABC") I now want to count the number of times that (F) occurs in red text within the listed range, the difference being that (F) is always only the last three digits in the cell eg ABC (F) I have tried these formulae =PERSONAL.XLS!CountByColorText($G$4:$R$211,3,TRUE, "*(F)*") {=PERSONAL.XLS!CountByColorText(RIGHT($G$4:$R$211, 3),3,TRUE, "(F)")} =SUMPRODUCT(--(NOT(ISERROR(SEARCH("F",$G$4:$R$211))*(PERSONAL.XL S!CountByColorText($G$4:$R$211,3,TRUE))))) None of which gave the correct answer My UDF code is as follows Code: Function CountByColorText(InRange As Range, _ WhatColorIndex As Integer, _ Optional OfText As Boolean = False, _ Optional Str As String = "") As Long Dim Rng As Range Dim CheckStr As Boolean Application.Volatile True For Each Rng In InRange.Cells CheckStr = False If Str = "" _ Or LCase(Rng.Value) = LCase(Str) Then CheckStr = True End If If CheckStr = True Then If OfText = True Then CountByColorText = CountByColorText - _ (Rng.Font.ColorIndex = WhatColorIndex) Else CountByColorText = CountByColorText - _ (Rng.Interior.ColorIndex = WhatColorIndex) End If End If Next Rng End Function__________________ Any help with a formula that will count (F) when it appears as part of the contents of a cell and is red text much appreciated In the Example attached, I want the result in cell d14 to be 1 +-------------------------------------------------------------------+ |Filename: count (F).zip | |Download: http://www.excelbanter.com/attachment.php?attachmentid=98| +-------------------------------------------------------------------+ -- Paul S -- Dave Peterson |
#3
![]() |
|||
|
|||
![]()
Thx Dave, as I'm a novice in VBA and up against a deadline I took your semi-industrious option, which worked fine
Paul Quote:
|
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Count text cells based on two criteria | Excel Worksheet Functions | |||
count cells,containing text, based on more than one criteria? | Excel Worksheet Functions | |||
Count items when specific text and date criteria are met | Excel Worksheet Functions | |||
How do I count wildcard text meeting certain criteria in EXCEL? | Excel Worksheet Functions | |||
Count by Colour (Text) with other criteria | Excel Discussion (Misc queries) |