Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Average a range within an array

I have a 2D array called PeriodicArray. It is 30 columns wide and 10 rows
deep. I want to average all the data in the first column of the array. Why
is the code below not working?

PeriodicAvg =
Application.WorksheetFunction.Average(.WorksheetFu nction.Offset(PeriodicArray, 0, 0, 10, 1))

Thanks

EM
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Average a range within an array

Hi Excel Monkey,

Perhaps try something like:

'=============
Public Sub Tester()
Dim rng As Range
Dim PeriodicAvg As Double

Set rng = Range("PeriodicArray")

PeriodicAvg = Application.Average(rng.Columns(1))

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman


"ExcelMonkey" wrote in message
...
I have a 2D array called PeriodicArray. It is 30 columns wide and 10 rows
deep. I want to average all the data in the first column of the array.
Why
is the code below not working?

PeriodicAvg =
Application.WorksheetFunction.Average(.WorksheetFu nction.Offset(PeriodicArray,
0, 0, 10, 1))

Thanks

EM



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Average a range within an array

Sorry Norman. My data is in an VBA array. I want to extract the Average of
Column 1 within that VBA Array. I think your answer assumed the data was in
a range in the spreadsheet.

EM

"Norman Jones" wrote:

Hi Excel Monkey,

Perhaps try something like:

'=============
Public Sub Tester()
Dim rng As Range
Dim PeriodicAvg As Double

Set rng = Range("PeriodicArray")

PeriodicAvg = Application.Average(rng.Columns(1))

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman


"ExcelMonkey" wrote in message
...
I have a 2D array called PeriodicArray. It is 30 columns wide and 10 rows
deep. I want to average all the data in the first column of the array.
Why
is the code below not working?

PeriodicAvg =
Application.WorksheetFunction.Average(.WorksheetFu nction.Offset(PeriodicArray,
0, 0, 10, 1))

Thanks

EM




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Average a range within an array

Hi Excel Monkey,

Perhaps nearer to your intention try:

'=============
Public Sub Tester2()
Dim PeriodicArray As Variant
Dim PeriodicAvg As Double
Dim arr As Variant
Dim i As Long

'Load array, e.g.:
PeriodicArray = Range("A1").Resize(10, 30).Value

arr = PeriodicArray

For i = UBound(arr, 2) To 1 Step -1
ReDim Preserve arr(1 To 10, 1 To i)
Next i

PeriodicAvg = Application.Average(arr)

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman


"Norman Jones" wrote in message
...
Hi Excel Monkey,

Perhaps try something like:

'=============
Public Sub Tester()
Dim rng As Range
Dim PeriodicAvg As Double

Set rng = Range("PeriodicArray")

PeriodicAvg = Application.Average(rng.Columns(1))

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Average a range within an array

Seems to work. Is it not possible to take the average of the column items
without looping? From what I can see you have transferred all the data from
the first column in the original array, to a new 1-D array and used the
function on that new array.

EM

"Norman Jones" wrote:

Hi Excel Monkey,

Perhaps nearer to your intention try:

'=============
Public Sub Tester2()
Dim PeriodicArray As Variant
Dim PeriodicAvg As Double
Dim arr As Variant
Dim i As Long

'Load array, e.g.:
PeriodicArray = Range("A1").Resize(10, 30).Value

arr = PeriodicArray

For i = UBound(arr, 2) To 1 Step -1
ReDim Preserve arr(1 To 10, 1 To i)
Next i

PeriodicAvg = Application.Average(arr)

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman


"Norman Jones" wrote in message
...
Hi Excel Monkey,

Perhaps try something like:

'=============
Public Sub Tester()
Dim rng As Range
Dim PeriodicAvg As Double

Set rng = Range("PeriodicArray")

PeriodicAvg = Application.Average(rng.Columns(1))

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Average a range within an array

Hi Excel Monkey,

Sorry Norman. My data is in an VBA array. I want to extract the
Average of Column 1 within that VBA Array. I think your answer
assumed the data was in a range in the spreadsheet.


Your assumption is correct and , therefore, se my follow up post.

---
Regards,
Norman


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Average a range within an array

Sorry one last question. It my original example, I wanted to average the
data in column 1 of the array. But what I will eventually want to do is to
average each column (i.e. all 30). So transfer data from first array to new
array, redimension it so that it only includes data from the column I am
interested in, then average it and then start again with second column etc.
In my example, I have 30 columns. I need to wrap another loop around your
code so that the average function is applied to "arr" 30 times based on each
column. Its not clear to me where I would do this in your code.

EM

"Norman Jones" wrote:

Hi Excel Monkey,

Perhaps nearer to your intention try:

'=============
Public Sub Tester2()
Dim PeriodicArray As Variant
Dim PeriodicAvg As Double
Dim arr As Variant
Dim i As Long

'Load array, e.g.:
PeriodicArray = Range("A1").Resize(10, 30).Value

arr = PeriodicArray

For i = UBound(arr, 2) To 1 Step -1
ReDim Preserve arr(1 To 10, 1 To i)
Next i

PeriodicAvg = Application.Average(arr)

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman


"Norman Jones" wrote in message
...
Hi Excel Monkey,

Perhaps try something like:

'=============
Public Sub Tester()
Dim rng As Range
Dim PeriodicAvg As Double

Set rng = Range("PeriodicArray")

PeriodicAvg = Application.Average(rng.Columns(1))

MsgBox PeriodicAvg

End Sub
'<<=============


---
Regards,
Norman




  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Average a range within an array

Seems to work. Is it not possible to take the average of the column items
without looping?

Hi Excel Monkey,

Seems to work. Is it not possible to take the average of the column items
without looping?


Not AFAIK. Of course, you could use an external function to perform the
work. In this connection, Alan Beban has a range of Array functions which
may be of interest and which may be downloaded at:

http://home.pacbell.net/beban/

From what I can see you have transferred all the data from
the first column in the original array, to a new 1-D array and used the
function on that new array.


I created the new array simply to allow subsequent processing of the
original array. Obviously, if no such processing is required, the same
results could be obtained using only the primary array..


---
Regards,
Norman


  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 200
Default Average a range within an array

Norman Jones wrote:
Seems to work. Is it not possible to take the average of the column

items
without looping?


Not AFAIK. Of course, you could use an external function to perform the
work. In this connection, Alan Beban has a range of Array functions

which
may be of interest and which may be downloaded at:

http://home.pacbell.net/beban/
. . .
Regards,
Norman


Thanks for the plug, Norman, but

Application.Average(Application.Index(PeriodicArra y, 0, n))

will return the average of the values in the nth column.

Alan Beban
Reply
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
AVERAGE ARRAY vukgar Excel Discussion (Misc queries) 1 May 5th 10 05:24 PM
Average Array Native Excel Discussion (Misc queries) 1 January 16th 08 05:23 PM
Average array hmm Excel Worksheet Functions 5 March 15th 07 01:17 PM
meaning of : IF(Switch; Average(array A, array B); array A) DXAT Excel Worksheet Functions 1 October 24th 06 06:11 PM
average, array and offsets Darin1979 Excel Worksheet Functions 0 November 17th 04 04:21 PM


All times are GMT +1. The time now is 11:57 PM.

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"