ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Returning the row no of the lowest non-zero cell in a range (https://www.excelbanter.com/excel-programming/343970-returning-row-no-lowest-non-zero-cell-range.html)

Peter Rooney

Returning the row no of the lowest non-zero cell in a range
 
Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought of a
nested loop where the value of each cell is tested and the row number stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete



Gary''s Student

Returning the row no of the lowest non-zero cell in a range
 
Two steps:

1. determine the lowest non-zero number: =SMALL(B10:B25,1) and if this is
zero use =SMALL(B10:B25,2)

2. find the row: use MATCH() on the result of step 1
--
Gary's Student


"Peter Rooney" wrote:

Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought of a
nested loop where the value of each cell is tested and the row number stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete



Bob Phillips[_6_]

Returning the row no of the lowest non-zero cell in a range
 
Pete,

Use

=MATCH(MIN(IF(B10:B25<0,B10:B25)),B10:B25,0)

which is an array formula, so commit with Ctrl-Shift-Enter. Be aware, it
will find the first if there are duplicates.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Peter Rooney" wrote in message
...
Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought

of a
nested loop where the value of each cell is tested and the row number

stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete





Peter Rooney

Returning the row no of the lowest non-zero cell in a range
 
Sorry, I didn't make myself clear.

The purpose of the exercise is to determine how far down a worksheet a
"Cumulative Hours" formula needs to be copied, so I don't have a column
containing unnecessary identical cumulative values where there isn't a
corresponding actual (the X axis, actuals and cumulatives are in columns B, C
and D)
I'm trying to do this in VBA - not in the actual worksheet.
Sorry if I wasted your time before!

Pete





"Gary''s Student" wrote:

Two steps:

1. determine the lowest non-zero number: =SMALL(B10:B25,1) and if this is
zero use =SMALL(B10:B25,2)

2. find the row: use MATCH() on the result of step 1
--
Gary's Student


"Peter Rooney" wrote:

Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought of a
nested loop where the value of each cell is tested and the row number stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete



Peter Rooney

Returning the row no of the lowest non-zero cell in a range
 
Bob,

Sorry, I didn't make myself clear.

The purpose of the exercise is to determine how far down a worksheet a
"Cumulative Hours" formula needs to be copied, so I don't have a column
containing unnecessary identical cumulative values where there isn't a
corresponding actual (the X axis, actuals and cumulatives are in columns B, C
and D)
I'm trying to do this in VBA - not in the actual worksheet.
Sorry if I wasted your time before!

Pete


"Bob Phillips" wrote:

Pete,

Use

=MATCH(MIN(IF(B10:B25<0,B10:B25)),B10:B25,0)

which is an array formula, so commit with Ctrl-Shift-Enter. Be aware, it
will find the first if there are duplicates.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Peter Rooney" wrote in message
...
Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought

of a
nested loop where the value of each cell is tested and the row number

stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete






Peter Rooney

Returning the row no of the lowest non-zero cell in a range
 
Sorry, I didn't make myself clear.

The purpose of the exercise is to determine how far down a worksheet a
"Cumulative Hours" formula needs to be copied, so I don't have a column
containing unnecessary identical cumulative values where there isn't a
corresponding actual (the X axis, actuals and cumulatives are in columns B, C
and D)
I'm trying to do this in VBA - not in the actual worksheet.
Sorry if I wasted your time before!

Pete


"Gary''s Student" wrote:

Two steps:

1. determine the lowest non-zero number: =SMALL(B10:B25,1) and if this is
zero use =SMALL(B10:B25,2)

2. find the row: use MATCH() on the result of step 1
--
Gary's Student


"Peter Rooney" wrote:

Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought of a
nested loop where the value of each cell is tested and the row number stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete



Bob Phillips[_6_]

Returning the row no of the lowest non-zero cell in a range
 

iRow = Evaluate("MATCH(MIN(IF(B10:B25<0,B10:B25)),B10:B2 5,0)")

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Peter Rooney" wrote in message
...
Bob,

Sorry, I didn't make myself clear.

The purpose of the exercise is to determine how far down a worksheet a
"Cumulative Hours" formula needs to be copied, so I don't have a column
containing unnecessary identical cumulative values where there isn't a
corresponding actual (the X axis, actuals and cumulatives are in columns

B, C
and D)
I'm trying to do this in VBA - not in the actual worksheet.
Sorry if I wasted your time before!

Pete


"Bob Phillips" wrote:

Pete,

Use

=MATCH(MIN(IF(B10:B25<0,B10:B25)),B10:B25,0)

which is an array formula, so commit with Ctrl-Shift-Enter. Be aware, it
will find the first if there are duplicates.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Peter Rooney" wrote in message
...
Good morning all,

Can anyone suggest a quick way of returning the row number of the

lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I

thought
of a
nested loop where the value of each cell is tested and the row number

stored
is to a varable if it is greater than the value already stored there,

but
this needs to be part of a worksheet_change macro and it might slow

things
down too much doing things in this way.

Thanks in advance

Pete








Mike Fogleman

Returning the row no of the lowest non-zero cell in a range
 
Sub MinRow()
Dim rng As Range
Dim MyRow As Long
Dim MyFormula As String

Set rng = Sheet1.Range("B10:B25")
MyFormula = WorksheetFunction.Match(WorksheetFunction.Small _
(rng, WorksheetFunction.CountIf(rng, 0) + 1), rng, 0)
MyRow = MyFormula + 9
End Sub

Mike F
"Peter Rooney" wrote in message
...
Good morning all,

Can anyone suggest a quick way of returning the row number of the lowest
cell in a range (e.g. B10:B25) that contains a non-zero value? I thought
of a
nested loop where the value of each cell is tested and the row number
stored
is to a varable if it is greater than the value already stored there, but
this needs to be part of a worksheet_change macro and it might slow things
down too much doing things in this way.

Thanks in advance

Pete






All times are GMT +1. The time now is 09:34 AM.

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