View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Rob van Gelder[_4_] Rob van Gelder[_4_] is offline
external usenet poster
 
Posts: 1,236
Default Defining a discontiguous Range object

Sub testit()
Dim rngSource As Range, rngFilter As Range, rng As Range, dblMySum As
Double

Set rngSource = Range("A1:A1000")

For Each rng In rngSource
If IsNumeric(rng.Value) And rng.Value = 500 Then
If rngFilter Is Nothing Then
Set rngFilter = rng
Else
Set rngFilter = Union(rngFilter, rng)
End If
End If
Next

rngFilter.Select
For Each rng In rngFilter: dblMySum = dblMySum + rng.Value: Next
MsgBox dblMySum
End Sub


"Charley Kyd" wrote in message
...
I have a spreadsheet column that could include empty cells, zero values,
strings, and non-zero values. I would like to define a Range object that
references only the non-zero values. I'd prefer not to loop.

Ideally, the method also would allow me to define a Range based on other
criteria, like cells with values greater than 100, or whatever.

This is easy to do in an array formula in a spreadsheet, with something
like:
=Sum(If(Foo100,Foo,0))

I've been playing around with FormulaArray. But I don't see a clean way to
define a range object based on this property.

Does anyone have any ideas?

Thanks.

Charley