View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
woodinville dave woodinville dave is offline
external usenet poster
 
Posts: 3
Default CountIf for unfiltered cells.

Thanks a bunch! that solved my problem. My final function is:
Function CountIfVisible(UserRange, criteria)
Dim count As Integer
count = 0
For Each cell In UserRange
If cell.EntireRow.Hidden = False Then
If cell.Value = criteria Then
count = count + 1
End If
End If
Next cell
CountIfVisible = count
End Function

--
- Dave


"Tom Ogilvy" wrote:

for each cell in Range("A2:A100")
if cell.EntireRow.Hidden = True then


End if
Next
--
Regards,
Tom Ogilvy



"woodinville dave" wrote in
message ...
Yeah subtotal works for count but not countif. I wish I could just pass
in a
function to subtotal to do countif.

Is there a way to test the individual cell to see if it is visible?
--
- Dave


"Dave Peterson" wrote:

If you're trying to use this UDF from a worksheet formula, then you're
seeing
the trouble that excel has with .specialcells.

I think you're going to have to loop through the range and test to see if
it's
visible.

===
BTW, if you're hiding rows via data|filter|autofilter, you could use the
worksheet formula:

=subtotal(3,a1:a10)

If you're using xl2003, then you could even use:
=subtotal(103,a1:a10)

=subtotal() was enhanced in xl2003 to ignore manually hidden rows.



woodinville dave wrote:

I'm trying to implement a countif for visible cells. When I use the
filter it
doesn't seem to affect the values I get back for xlCellTypeVisible.
This is
my function, I'm sure I am doing something stupid.

Function CountIfVisible(UserRange, criteria)
Dim count As Integer
count = 0
For Each cell In UserRange.SpecialCells(xlCellTypeVisible)
If cell.Value = criteria Then
count = count + 1
End If
Next cell
CountIfVisible = count
MsgBox count
End Function

Thanks for any help,
Dave

--

Dave Peterson