View Single Post
  #11   Report Post  
Posted to microsoft.public.excel.worksheet.functions
Dave F Dave F is offline
external usenet poster
 
Posts: 2,574
Default Need big help with look up....is this possible

What is this function supposed to do for you that the standard VLOOKUP
function will not do?
--
Brevity is the soul of wit.


"Dan B" wrote:

Yeah...a #VALUE! error. I think I'm in over my head on this one.



"Dave F" wrote in message
...
I believe you can leave the code as is. Are you getting errors when you
try
to use the function?
--
Brevity is the soul of wit.


"Dan B" wrote:

Dave,

Can I just copy the code as is, or do I need to edit things like
MyRange.Parent or MySheet.Cells. I'm trying to get a grasp on the
functionality of all this.
I appreciate your help.

Dan


"Dan B" wrote in message
...
Ok, I fixed the carriage return. That was a problem. I'll take the
functions out and see what that does. I will also give your suggestion
a
try.

Thanks.


"Dave F" wrote in message
...
The first thing I would try is this code:

Function Vlokup(Custumer As String, MyRange As Range, YearNumber, Col)
Dim Mysheet
Dim c As Range, Last
Set Mysheet = MyRange.Parent
Set c = MyRange
Application.Volatile
If YearNumber < 0 Then Vlokup = Mysheet.Cells(c.Find(Custumer,
LookIn:=xlValues).Row + YearNumber + 2, Col)
End If
If YearNumber = 0 Then
Last = c.Find(Custumer, LookIn:=xlValues).Offset(2,
0).End(xlDown).Row
Vlokup = Mysheet.Cells(Last, Col)
End If
End Function

You have a carriage return in your code at the point where you're
adding
.Row + YearNumber + 2 and Excel doesn't know how to handle that
because
it's
expecting you to finish the math in the line.

So, make sure that a line is not interrupted with a carriage return.

Also note that the lines at the top of your code which begin with
vlokup
are
not part of the code but rather the syntax of the function when you
use
it in
a workbook.

Dave
--
Brevity is the soul of wit.


"Dan B" wrote:

this is it:

=Vlokup("Cust. #1",Sheet1!A1:A100,1,2) - return 2005 (column B)
=Vlokup("Cust. #1",Sheet1!A1:A100,3,2) - return 2003 (column B)
=Vlokup("Cust. #1",Sheet1!A1:A100,0,2) - return 1999 (0=first year)
=Vlokup("Cust. #2",Sheet1!A1:A100,5,4) - return 15 (column D)

Function Vlokup(Custumer As String, MyRange As Range, YearNumber,
Col)
Dim Mysheet
Dim c As Range, Last
Set Mysheet = MyRange.Parent
Set c = MyRange
Application.Volatile
If YearNumber < 0 Then
Vlokup = Mysheet.Cells(c.Find(Custumer, LookIn:=xlValues).Row +
YearNumber + 2, Col)
End If
If YearNumber = 0 Then
Last = c.Find(Custumer, LookIn:=xlValues).Offset(2,
0).End(xlDown).Row
Vlokup = Mysheet.Cells(Last, Col)
End If
End Function




"Dave F" wrote in message
...
What is the code you're using?
--
Brevity is the soul of wit.


"Dan B" wrote:

Excelent,

Could you explain a little more on how to use this. Its a little
over my
experience level, but I'd love to know how to do this. So far I
have
created a new module and pasted you code. I then changed each
Sheet1! to
Losses! (the name of the worksheet with the data). This is the
only
change
I made on your code. I get an error saying Compile Error:
Expected:
line
number or label or statement or end of statement. Was there
something
else
needing changes?

Thanks
Dan



try this function. but it depend on that ur custumernames are in
column A
and the cell just below is empty, then a cell with #
just like it seems to be in ur example
otherwise the function have to be modifyed a bit.

put in a regular module then use like this:
=Vlokup("Cust. #1",Sheet1!A1:A100,1,2) - return 2005 (column B)
=Vlokup("Cust. #1",Sheet1!A1:A100,3,2) - return 2003 (column B)
=Vlokup("Cust. #1",Sheet1!A1:A100,0,2) - return 1999 (0=first
year)
=Vlokup("Cust. #2",Sheet1!A1:A100,5,4) - return 15 (column D)

Function Vlokup(Custumer As String, MyRange As Range, YearNumber,
Col)
Dim Mysheet
Dim c As Range, Last
Set Mysheet = MyRange.Parent
Set c = MyRange
Application.Volatile
If YearNumber < 0 Then
Vlokup = Mysheet.Cells(c.Find(Custumer, LookIn:=xlValues).Row
+
YearNumber + 2, Col)
End If
If YearNumber = 0 Then
Last = c.Find(Custumer, LookIn:=xlValues).Offset(2,
0).End(xlDown).Row
Vlokup = Mysheet.Cells(Last, Col)
End If
End Function