I think you'll need a userdefined function.
Option Explicit
Function myCount(rng As Range)
Application.Volatile True
Dim myCell As Range
Dim myCtr As Long
myCtr = 0
For Each myCell In rng.Cells
If IsEmpty(myCell) _
Or myCell.EntireRow.Hidden = True _
Or myCell.EntireColumn.Hidden = True Then
'do nothing, ignore it
Else
myCtr = myCtr + 1
End If
Next myCell
myCount = myCtr
End Function
======
In xl2002, I don't think that hiding rows causes a recalculation, though. You
may want to hit F9 before you trust the result of the UDF. (xl2003 recalcs when
you hide a row--but you don't need this kind of function in xl2003--as Peo
said.)
If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
Short course:
Open your workbook.
Hit alt-f11 to get to the VBE (where macros/UDF's live)
hit ctrl-R to view the project explorer
Find your workbook.
should look like: VBAProject (yourfilename.xls)
right click on the project name
Insert, then Module
You should see the code window pop up on the right hand side
Paste the code in there.
Now go back to excel.
Into a test cell and type:
=mycount(a2:a33)