ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Application.worksheetfunction (https://www.excelbanter.com/excel-programming/313136-application-worksheetfunction.html)

Terry V

Application.worksheetfunction
 
Hello
Im trying to create a function for a userform that averages a range on a
sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer but
anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif
(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set fr=range("Times!F3:F53")
and using this instead of the range in the worksheetfunction formula.

How can I place this into a textbox on my userform as the average of that
range (assuming there will be values that have a "" value?

Thank you so much
Terry V



keepITcool

Application.worksheetfunction
 
the overflow error is probably caused by the fact that you assign the
result to an integer and the result 32767

assign the result to a double or variant.

count counts the numeric entries
countA counts all non-blank entries
countBlank counts the blanks.


Sub Foo()
Dim x As Double, y As Double
Dim n As Long, m As Long

Dim r As Range
Set r = Range("F3:F53")
With Application.WorksheetFunction
'use range variable
x = .Sum(r) / .Count(r)
'use range directly in arguments
y = .Sum(Range("F3:F53")) / .Count(Range("F3:F53"))
'count the blanks can be done several ways
n = .CountIf(Range("F3:F53"), "=" & vbNullString)
m = .CountBlank(Range("F3:F53"))
End With
'now have a look at the values of the variables.
Application.VBE.Windows("Locals").Visible = True
Stop
End Sub

Sub Overflow()
'this will cause overflow!
Dim i As Integer
i = 32767 'ok
i = 32768 'ouch!
End Sub



keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on
a sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer
but anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif
(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """
)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set
fr=range("Times!F3:F53") and using this instead of the range in the
worksheetfunction formula.

How can I place this into a textbox on my userform as the average of
that range (assuming there will be values that have a "" value?

Thank you so much
Terry V





Myrna Larson

Application.worksheetfunction
 
You want to get the average of the range F3:F53, ignoring cells that contain
empty text or are blank, right?

AVERAGE ignores blanks and text, so why can't you use just

A = Application.SUM(Range("F3:F53"))

instead of SUMIF and COUNTIF?


On Mon, 11 Oct 2004 09:29:24 GMT, "Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on a
sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer but
anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif
(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set fr=range("Times!F3:F53")
and using this instead of the range in the worksheetfunction formula.

How can I place this into a textbox on my userform as the average of that
range (assuming there will be values that have a "" value?

Thank you so much
Terry V



Tom Ogilvy

Application.worksheetfunction
 
Or did you mean

A = Application.Average(Range("F3:F53"))

--
Regards,
Tom Ogilvy


"Myrna Larson" wrote in message
...
You want to get the average of the range F3:F53, ignoring cells that

contain
empty text or are blank, right?

AVERAGE ignores blanks and text, so why can't you use just

A = Application.SUM(Range("F3:F53"))

instead of SUMIF and COUNTIF?


On Mon, 11 Oct 2004 09:29:24 GMT, "Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on a
sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer but
anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif
(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set

fr=range("Times!F3:F53")
and using this instead of the range in the worksheetfunction formula.

How can I place this into a textbox on my userform as the average of that
range (assuming there will be values that have a "" value?

Thank you so much
Terry V





Myrna Larson

Application.worksheetfunction
 
Yes, I think I did! Thank's for catching that!

On Mon, 11 Oct 2004 15:53:57 -0400, "Tom Ogilvy" wrote:

Or did you mean

A = Application.Average(Range("F3:F53"))



Terry V

Application.worksheetfunction
 
I need to be able to average the column. In the column, I will have blank
strings ( "" ) because of the formula I have. So I cannot use Average
because it averages "all values".
So I figured if I sum all cells that are <"" and divide it by the count of
all cells <"", it would give me the results I was hoping for.

Hence the
Application.WorksheetFunction.Sumif()/Application.WorksheetFunction.Countif(
)

Thank you
TerryV

"Tom Ogilvy" wrote in message
...
Or did you mean

A = Application.Average(Range("F3:F53"))

--
Regards,
Tom Ogilvy


"Myrna Larson" wrote in message
...
You want to get the average of the range F3:F53, ignoring cells that

contain
empty text or are blank, right?

AVERAGE ignores blanks and text, so why can't you use just

A = Application.SUM(Range("F3:F53"))

instead of SUMIF and COUNTIF?


On Mon, 11 Oct 2004 09:29:24 GMT, "Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on

a
sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer but
anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif


(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set

fr=range("Times!F3:F53")
and using this instead of the range in the worksheetfunction formula.

How can I place this into a textbox on my userform as the average of

that
range (assuming there will be values that have a "" value?

Thank you so much
Terry V







Terry V

Application.worksheetfunction
 
Thank you
This gives me a good Idea of the different ways to count. I like the example
you gave because I knew nothing about the Locals Windows... which was really
helpful...

Again, Thank you so much
Terry V
"keepITcool" wrote in message
...
the overflow error is probably caused by the fact that you assign the
result to an integer and the result 32767

assign the result to a double or variant.

count counts the numeric entries
countA counts all non-blank entries
countBlank counts the blanks.


Sub Foo()
Dim x As Double, y As Double
Dim n As Long, m As Long

Dim r As Range
Set r = Range("F3:F53")
With Application.WorksheetFunction
'use range variable
x = .Sum(r) / .Count(r)
'use range directly in arguments
y = .Sum(Range("F3:F53")) / .Count(Range("F3:F53"))
'count the blanks can be done several ways
n = .CountIf(Range("F3:F53"), "=" & vbNullString)
m = .CountBlank(Range("F3:F53"))
End With
'now have a look at the values of the variables.
Application.VBE.Windows("Locals").Visible = True
Stop
End Sub

Sub Overflow()
'this will cause overflow!
Dim i As Integer
i = 32767 'ok
i = 32768 'ouch!
End Sub



keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on
a sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer
but anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif
(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """
)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set
fr=range("Times!F3:F53") and using this instead of the range in the
worksheetfunction formula.

How can I place this into a textbox on my userform as the average of
that range (assuming there will be values that have a "" value?

Thank you so much
Terry V







Myrna Larson

Application.worksheetfunction
 
PLEASE..... look at Help for the AVERAGE function. It does NOT average "all
values". It averages all NUMBERS.

Here's the relevant statement from Help: "If an array or reference argument
contains text, logical values, or empty cells, those values are ignored;
however, cells with the value zero are included."

Why don't you try your more complicated formula and compare the result with a
simple AVERAGE function. I'm sure that if you've described your situation
correctly, the results will be identical.

On Tue, 12 Oct 2004 03:29:01 GMT, "Terry V" wrote:

I need to be able to average the column. In the column, I will have blank
strings ( "" ) because of the formula I have. So I cannot use Average
because it averages "all values".
So I figured if I sum all cells that are <"" and divide it by the count of
all cells <"", it would give me the results I was hoping for.

Hence the
Application.WorksheetFunction.Sumif()/Application.WorksheetFunction.Countif(
)

Thank you
TerryV

"Tom Ogilvy" wrote in message
...
Or did you mean

A = Application.Average(Range("F3:F53"))

--
Regards,
Tom Ogilvy


"Myrna Larson" wrote in message
...
You want to get the average of the range F3:F53, ignoring cells that

contain
empty text or are blank, right?

AVERAGE ignores blanks and text, so why can't you use just

A = Application.SUM(Range("F3:F53"))

instead of SUMIF and COUNTIF?


On Mon, 11 Oct 2004 09:29:24 GMT, "Terry V" wrote:

Hello
Im trying to create a function for a userform that averages a range on

a
sheet based on weather the values are not = "".

EX: the formula in my cells on the sheet (time cells) is this:
=IF(ISBLANK($B7),"",SUM(B7:E7))

Im not sure why, but even on my sheet I cannot get the right answer but
anyways:

On the userform, Im taking the average of cells F3:F53
I ve tried the Application.WorksheetFunction.Sumif

(F3:F53,"<""""")/Application.WorksheetFunction.CountIf(F3:F53,"<"" """)

But as most of you probably know, it did not work (overflow).
I tried placing the range into a range variable set

fr=range("Times!F3:F53")
and using this instead of the range in the worksheetfunction formula.

How can I place this into a textbox on my userform as the average of

that
range (assuming there will be values that have a "" value?

Thank you so much
Terry V








All times are GMT +1. The time now is 02:47 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com