ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Get Current Row for use in INDIRECT function (https://www.excelbanter.com/excel-worksheet-functions/133236-get-current-row-use-indirect-function.html)

TBONE6540

Get Current Row for use in INDIRECT function
 
Goal: Average a number of cells based on a variable (located in $F$4) that
tells the function how many rows to average.

Currently the cells look like following and obviously average the next 10
rows, which is fine until I wish to change the average to include the next 15
or 20 or 100 rows instead of the hardcoded 10 rows.

cell y5 =AVERAGE(Z5:Z15)
cell y6 =AVERAGE(Z6:Z16)
cell y7 =AVERAGE(Z7:Z17)

So I'm trying to create a function that will allow me to use the value at
$F$4 to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))

I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row) &
":Z" & FUNCTION(current row)+$F$4))

any and all help is appreciated...

Héctor Miguel

Get Current Row for use in INDIRECT function
 
hi, ?

Goal: Average a number of cells based on a variable (located in $F$4)
that tells the function how many rows to average [...]
So I'm trying to create a function that will allow me to use the value at $F$4
to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))
I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row)
& ":Z" & FUNCTION(current row)+$F$4))
any and all help is appreciated...


assuming 'F4' includes 'starting' row for the 'sizeable' range...
how about: =average(offset(z5,,,$f$4,))

hth,
hector.



T. Valko

Get Current Row for use in INDIRECT function
 
Another way:

=AVERAGE(Z5:INDEX(Z5:Z1000,F$4))

Adjust for the end of the range.

If F4 is empty the entire range will be calculated.

Biff

"TBONE6540" wrote in message
...
Goal: Average a number of cells based on a variable (located in $F$4) that
tells the function how many rows to average.

Currently the cells look like following and obviously average the next 10
rows, which is fine until I wish to change the average to include the next
15
or 20 or 100 rows instead of the hardcoded 10 rows.

cell y5 =AVERAGE(Z5:Z15)
cell y6 =AVERAGE(Z6:Z16)
cell y7 =AVERAGE(Z7:Z17)

So I'm trying to create a function that will allow me to use the value at
$F$4 to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))

I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row) &
":Z" & FUNCTION(current row)+$F$4))

any and all help is appreciated...




Teethless mama

Get Current Row for use in INDIRECT function
 
=AVERAGE(Z5:INDIRECT("Z"&ROW(Z5)+$F$4))


"TBONE6540" wrote:

Goal: Average a number of cells based on a variable (located in $F$4) that
tells the function how many rows to average.

Currently the cells look like following and obviously average the next 10
rows, which is fine until I wish to change the average to include the next 15
or 20 or 100 rows instead of the hardcoded 10 rows.

cell y5 =AVERAGE(Z5:Z15)
cell y6 =AVERAGE(Z6:Z16)
cell y7 =AVERAGE(Z7:Z17)

So I'm trying to create a function that will allow me to use the value at
$F$4 to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))

I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row) &
":Z" & FUNCTION(current row)+$F$4))

any and all help is appreciated...


TBONE6540

Get Current Row for use in INDIRECT function
 
Thanks to all... Here's what I have at the moment:

=AVERAGE(INDIRECT("Z"&ROW()&":Z" & ROW()+$F$4))

The problem now is that if I insert a column before the Z column, everthing
gets screwed up... I need the "Z" reference in the INDIRECT statement to be
adjusted if I add or delete columns...

"Teethless mama" wrote:

=AVERAGE(Z5:INDIRECT("Z"&ROW(Z5)+$F$4))


"TBONE6540" wrote:

Goal: Average a number of cells based on a variable (located in $F$4) that
tells the function how many rows to average.

Currently the cells look like following and obviously average the next 10
rows, which is fine until I wish to change the average to include the next 15
or 20 or 100 rows instead of the hardcoded 10 rows.

cell y5 =AVERAGE(Z5:Z15)
cell y6 =AVERAGE(Z6:Z16)
cell y7 =AVERAGE(Z7:Z17)

So I'm trying to create a function that will allow me to use the value at
$F$4 to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))

I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row) &
":Z" & FUNCTION(current row)+$F$4))

any and all help is appreciated...


Héctor Miguel

Get Current Row for use in INDIRECT function
 
hi, !

Thanks to all... Here's what I have at the moment:
=AVERAGE(INDIRECT("Z"&ROW()&":Z" & ROW()+$F$4))
The problem now is that if I insert a column before the Z column, everthing gets screwed up...
I need the "Z" reference in the INDIRECT statement to be adjusted if I add or delete columns...


AFAIK indirect function uses *frozen*/text references
it does not care if you insert/delete rows/columns... it will point always to the quoted text

you have other approaches as for to give them a try
or you can play with other information functions [colum, address, cell, etc.]
and -probably- you will get a *kilometrical* formula at the end -?-

hth,
hector.



Toppers

Get Current Row for use in INDIRECT function
 
If any column insertion is AFTER column F, use Biff's formula:

=AVERAGE(Z5:INDEX(Z5:Z1000,F$4))

Insertion before F will change $F$4 reference.

"TBONE6540" wrote:

Thanks to all... Here's what I have at the moment:

=AVERAGE(INDIRECT("Z"&ROW()&":Z" & ROW()+$F$4))

The problem now is that if I insert a column before the Z column, everthing
gets screwed up... I need the "Z" reference in the INDIRECT statement to be
adjusted if I add or delete columns...

"Teethless mama" wrote:

=AVERAGE(Z5:INDIRECT("Z"&ROW(Z5)+$F$4))


"TBONE6540" wrote:

Goal: Average a number of cells based on a variable (located in $F$4) that
tells the function how many rows to average.

Currently the cells look like following and obviously average the next 10
rows, which is fine until I wish to change the average to include the next 15
or 20 or 100 rows instead of the hardcoded 10 rows.

cell y5 =AVERAGE(Z5:Z15)
cell y6 =AVERAGE(Z6:Z16)
cell y7 =AVERAGE(Z7:Z17)

So I'm trying to create a function that will allow me to use the value at
$F$4 to determine the "size" of the range
pseduo code is: =AVERAGE(Z5:Z(5+$F$4))

I get about this close: =AVERAGE(INDIRECT("Z" & FUNCTION(current_row) &
":Z" & FUNCTION(current row)+$F$4))

any and all help is appreciated...


Harlan Grove[_2_]

Get Current Row for use in INDIRECT function
 
"T. Valko" wrote...
Another way:

=AVERAGE(Z5:INDEX(Z5:Z1000,F$4))

Adjust for the end of the range.

If F4 is empty the entire range will be calculated.

....

Which could be trapped using

=AVERAGE(Z5:INDEX(Z5:Z1000,MAX(1,F$4)))

which also implicitly handles F4 containing non-numeric text.



All times are GMT +1. The time now is 04:54 AM.

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