ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   VBA Formulas (https://www.excelbanter.com/excel-worksheet-functions/141698-vba-formulas.html)

Sandy

VBA Formulas
 
Hi
I have a situation where I would like to Sum, Average, etc entirely within
VBA
eg

Dim CountCol As Integer
Dim AvScore As Single

CountCol=Worksheets("Search").Evaluate("ROWS(H8:H3 00)-COUNTBLANK(H8:H300)")

'Would this be even close for the next bit? (Which I know is wrong)

AvScore=Worksheets("Search").Evaluate("AVERAGE(8, 11):(8+CountCol, 11)")

'The result from this is then allocated to a particular cell

Sheets("Sheet1").Range("A11").Value = AvScore

Thanks in advance
Sandy



JE McGimpsey

VBA Formulas
 
One way:

Dim nCountCol As Long
Dim dAvScore As Double

With Worksheets("Search")
nCountCol = Application.WorksheetFunction.CountIf( _
.Range("H8:H300"), "<" & vbNullString)
dAvScore = Application.WorksheetFunction.Average( _
.Range("K8").Resize(nCountCol, 1))
End With
Sheets("Sheet1").Range("A11").Value = dAvScore


In article ,
"Sandy" wrote:

Hi
I have a situation where I would like to Sum, Average, etc entirely within
VBA
eg

Dim CountCol As Integer
Dim AvScore As Single

CountCol=Worksheets("Search").Evaluate("ROWS(H8:H3 00)-COUNTBLANK(H8:H300)"
)

'Would this be even close for the next bit? (Which I know is wrong)

AvScore=Worksheets("Search").Evaluate("AVERAGE(8, 11):(8+CountCol, 11)")

'The result from this is then allocated to a particular cell

Sheets("Sheet1").Range("A11").Value = AvScore

Thanks in advance
Sandy


Don Guillett

VBA Formulas
 
You shouldn't need to use evaluate unless you are using a sumproduct
formula. Try

'MsgBox Application.Average(Range("h3:k4"))
sheets("sheet1").range("a11")= Application.Average(Range("h3:k4"))

--
Don Guillett
SalesAid Software

"Sandy" wrote in message
...
Hi
I have a situation where I would like to Sum, Average, etc entirely within
VBA
eg

Dim CountCol As Integer
Dim AvScore As Single


CountCol=Worksheets("Search").Evaluate("ROWS(H8:H3 00)-COUNTBLANK(H8:H300)")

'Would this be even close for the next bit? (Which I know is wrong)

AvScore=Worksheets("Search").Evaluate("AVERAGE(8, 11):(8+CountCol,
11)")

'The result from this is then allocated to a particular cell

Sheets("Sheet1").Range("A11").Value = AvScore

Thanks in advance
Sandy




All times are GMT +1. The time now is 01:19 PM.

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