Home |
Search |
Today's Posts |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sorry for the late reply.
JLatham, thankyou very much, I now have something to work with, and a good explanation. cheers ste JLatham (removethis) wrote: Well it's tough to be absolute unless we know the range that the value in columns I and J may be - But here's how to save the values minValue = Sheets("Main").Range("I" & Rows.Count).End(xlUp).value maxValue = Sheets("Main").Range("J" & Rows.Count).End(xlUp).value now the problem is getting last data to be between them? Since we don't know how much variance there may be between minValue and maxValue, then it's hard to guess what to do with this. But here is one attempt: lastdata = minValue + 1 If lastData maxValue Then lastdata = minValue End If That sets lastdata to 1 greater than minValue (from col I) to begin with, then tests to see if that is greater than maxValue (from col J). If it is greater, then minValue = maxValue, and so we reset it back to = minValue which is also =maxValue Another approach would be similar to what I proposed befo finding the median value of the two: lastdata = (minValue + maxValue)/2 Remember that once you get last data and try to .Find it, you only get success if there is an exact match found, otherwise the .Find returns an error. Your myfound will be null if no match found. "ste mac" wrote: Sorry guys for the poor explanation. The code looks at data in another sheet '("BaseData")' and searches backwards through the range 'Sheets("BaseData").Columns("B:U")' to find 'lastdata'. My problem is that 'lastdata' will be equal to or between...two values... Sheets("Main").Range("I65536").End(xlUp).Value... and ....Sheets("Main").Range("J65536").End(xlUp).Value ) The code searches backwards in the range on the sheet "BaseData" and finds the first value in the range that is equal to/between: Sheets("Main").Range("I65536").End(xlUp).Value & Sheets("Main").Range("J65536").End(xlUp).Value) If I change the code to e.g 'lastdata = 14070' (which is inbetween the values required) then the code works fine and will search backwards and locate the first instance. The problem I have is that I don't know how to declare 'lastdata' as any value equal to or between the two values required. once again thanks for any help... ste JLatham (removethis) wrote: Not sure how to advise you because I'm not sure what your values in the last row of columns I and J may look like. But possibly something like this would work?? lastdata = (Sheets("Main").Range("I" & Rows.Count).End(xlUp).Value + _ Sheets("Main").Range("J" & Rows.Count).End(xlUp).Value) / 2 That would take the two values, add them together and divide by two to give an average which should be a number between the two, or equal two if both numbers happen to be the same. P.S. Range("J" & Rows.Count) is same as Range("J65536") without being limited to a version of Excel where 65536 is the max row count. "ste mac" wrote: Hi, I have the code below, but I do not know how to adjust the syntax. How do I get 'lastdata' to be equal to, greater than and equal to, less than two cell values? cheers ste Sub findlatest() Application.ScreenUpdating = false Dim myrng As Range Dim myfound As Range Dim lastdata As Long Sheets("Main").Select 'Problem here! lastdata= (= Sheets("Main").Range("I65536").End(xlUp).Value And lastdata <= Sheets("Main").Range("J65536").End(xlUp).Value ) Set myrng = Sheets("BaseData").Columns("B:U") Set myfound = myrng.Find(What:=lastdata, After:=myrng.Cells(1), LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) Sheets("Main").Range("L65536").End(xlUp).Value = myfound.Row - 1 Application.ScreenUpdating = True End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
IF, THEN SYNTAX | Excel Worksheet Functions | |||
VB Syntax | Excel Discussion (Misc queries) | |||
If then syntax | Excel Worksheet Functions | |||
help in syntax | Excel Programming | |||
Need some syntax help, please | Excel Programming |