ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Find Last Value (https://www.excelbanter.com/excel-programming/365832-find-last-value.html)

comparini3000

Find Last Value
 
I have many entries describing sales events, and one of the columns in every
entry is quarter. I'd like to find where one quarter starts and where one
ends without doing any filtering or deleting.
For example, i have

___K___
1|Q1
2|Q1
3|Q1
4|Q1
5|Q1
6|Q2
7|Q2

I'd like to use a code that, in this example, would return row 5 as the last
Q1 value. Is this possible?
thanks in advance

comparini3000

Bob Phillips

Find Last Value
 
Simple enough

=MAX(IF(A1:A20="Q1",ROW(A1:A20)))

which is an array formula, it should be committed with Ctrl-Shift-Enter, not
just Enter.

To get the first row, change MAX to MIN

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"comparini3000" wrote in message
...
I have many entries describing sales events, and one of the columns in

every
entry is quarter. I'd like to find where one quarter starts and where one
ends without doing any filtering or deleting.
For example, i have

___K___
1|Q1
2|Q1
3|Q1
4|Q1
5|Q1
6|Q2
7|Q2

I'd like to use a code that, in this example, would return row 5 as the

last
Q1 value. Is this possible?
thanks in advance

comparini3000




Jim Thomlinson

Find Last Value
 
Give this a try...

Public Sub FindLast()
Dim rngFound As Range
Dim rngToSearch As Range

Set rngToSearch = Range("K2", Cells(Rows.Count, "K").End(xlUp))
Set rngFound = rngToSearch.Find(What:="Q1", _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchDirection:=xlPrevious)
If rngFound Is Nothing Then
MsgBox "Sorry... Not Found"
Else
MsgBox "Found on row " & rngFound.Row
End If

End Sub

--
HTH...

Jim Thomlinson


"comparini3000" wrote:

I have many entries describing sales events, and one of the columns in every
entry is quarter. I'd like to find where one quarter starts and where one
ends without doing any filtering or deleting.
For example, i have

___K___
1|Q1
2|Q1
3|Q1
4|Q1
5|Q1
6|Q2
7|Q2

I'd like to use a code that, in this example, would return row 5 as the last
Q1 value. Is this possible?
thanks in advance

comparini3000


comparini3000

Find Last Value
 
Mr. Phillips, thank you for your quick reply, the formula worked wonderfully.
However, I was looking for a VBA solution. How would I do that?

"Bob Phillips" wrote:

Simple enough

=MAX(IF(A1:A20="Q1",ROW(A1:A20)))

which is an array formula, it should be committed with Ctrl-Shift-Enter, not
just Enter.

To get the first row, change MAX to MIN

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)


comparini3000

Find Last Value
 
That's excellent, it's exactly what I needed. Thank you for your help!

"Jim Thomlinson" wrote:

Give this a try...

Public Sub FindLast()
Dim rngFound As Range
Dim rngToSearch As Range

Set rngToSearch = Range("K2", Cells(Rows.Count, "K").End(xlUp))
Set rngFound = rngToSearch.Find(What:="Q1", _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchDirection:=xlPrevious)
If rngFound Is Nothing Then
MsgBox "Sorry... Not Found"
Else
MsgBox "Found on row " & rngFound.Row
End If

End Sub

--
HTH...

Jim Thomlinson


"comparini3000" wrote:

I have many entries describing sales events, and one of the columns in every
entry is quarter. I'd like to find where one quarter starts and where one
ends without doing any filtering or deleting.
For example, i have

___K___
1|Q1
2|Q1
3|Q1
4|Q1
5|Q1
6|Q2
7|Q2

I'd like to use a code that, in this example, would return row 5 as the last
Q1 value. Is this possible?
thanks in advance

comparini3000


Bob Phillips

Find Last Value
 
MsgBox ActiveSheet.Evaluate("MAX(IF(A1:A20=""Q1"",ROW(A1: A20)))")



--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"comparini3000" wrote in message
...
Mr. Phillips, thank you for your quick reply, the formula worked

wonderfully.
However, I was looking for a VBA solution. How would I do that?

"Bob Phillips" wrote:

Simple enough

=MAX(IF(A1:A20="Q1",ROW(A1:A20)))

which is an array formula, it should be committed with Ctrl-Shift-Enter,

not
just Enter.

To get the first row, change MAX to MIN

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)





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

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