LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 73
Default vba arrays, count blank cells

I am trying to write a harmonic mean function that will evaluate a set
of numbers, even if there are negative or zero values.

The harmonic mean formula is the count of numbers in the data set
divided by the sum of 1/n. The excel function is =harmean(). For
example, the data set 5, 7, 4, 10, 11, 15, 12 yields a harmonic mean of
7.497...( 7 / (1/5+1/7+1/4+1/10+1/11+1/15+1/12)). This formula does
NOT work if their is a zero OR negative number in the set.

I have written code that will evaluate the numbers, but my question is
whether or not their is a way to count the blank/text/empty cells in an
array? Originally, I thought using a countif(array,"=0") or
count(isempty(array)) would work, but learned that countif doesn't seem
to work with arrays and count(isempty(array)) will return 1 no matter
how many cells may be empty or will return zero if no cells are empty.
Any help would be appreciated.

If the above data set were 5, 7, -4, 10, -11, 15, and 12 the formula
would be
( 7 / (1/5+1/7+1/10+1/15+1/12)).

Note: I know that in the code below I could use (counter / sum(array)),
but I'm looking to see if there is a more robust way.

Sub hMeanRefined()

Dim hMean()
Dim counter
Dim shM 'sum hMean
Dim chM 'count hMean
Dim cehM 'count empty hMean
Dim vhM 'value hMean

Sheets("Refined").Select

Rows("2:8").ClearContents
counter = Range("a1").CurrentRegion.Columns.Count

ReDim hMean(1, 1 To counter)

For a = 1 To counter
If Cells(1, a) <= 0 Then
hMean(1, a) = "empty"
'hMean(1, a) = Empty
Cells(2, a) = hMean(1, a)
Else
hMean(1, a) = 1 / Cells(1, a)
Cells(2, a) = hMean(1, a)
End If
Next

shM = Application.Sum(hMean)
Cells(2, counter + 1) = shM
Cells(2, counter + 2) = "Sum of 1/n"

chM = Application.Count(hMean)
Cells(3, counter + 1) = chM
Cells(3, counter + 2) = "Count of numbers in set"

'cehM = Application.CountIf(hMean, "=0")
'cehM = Application.Count(IsEmpty(hMean))

cehM = Application.CountIf(Range(Cells(1, 1), Cells(1, counter)),
"<=0")
Cells(4, counter + 1) = cehM
Cells(4, counter + 2) = "Count of empty or negative cells in set"

vhM = (chM + cehM) / shM
Cells(5, counter + 1) = (Cells(3, counter + 1) + Cells(4, counter +
1)) / Cells(2, counter + 1)
Cells(5, counter + 2) = "(Count of numbers + Count of empty) / Sum of
1/n"

Cells(6, counter + 1) = vhM

End Sub

Thanks,

Matt

 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
how to count#cells w/= value in other column and not count blank c aganoe Excel Worksheet Functions 4 April 9th 10 11:36 AM
Count from Blank & Non-Blank Cells Mandeep Dhami Excel Discussion (Misc queries) 4 February 12th 08 03:25 PM
Count the non blank cells vijaydsk1970 Excel Worksheet Functions 1 November 9th 06 02:25 PM
Help getting count of non-blank cells Casey Excel Discussion (Misc queries) 3 May 18th 06 02:31 PM
Count of non-blank cells. EWill Excel Programming 1 October 1st 03 10:50 PM


All times are GMT +1. The time now is 06:29 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"