Here's a function (UDF) that will do it. You could then call if like
=CountShapes(A:C)
Code:
Function CountShapes(rngSearch As Range) As Long
Dim sh As Shape
For Each sh In rngSearch.Parent.Shapes
If Not Intersect(rngSearch, sh.TopLeftCell) Is Nothing Then
CountShapes = CountShapes + 1
End If
Next sh
End Function