+ Reply to Thread
Results 1 to 5 of 5

vlookup

  1. #1
    Forum Contributor
    Join Date
    08-20-2005
    Posts
    173

    vlookup

    this is my original function, works fine,
    however the lookup range can vary greatly, 2nd version is below,
    not quite working, help on this one is much appreciated

    Function taz(a, b) As Variant
    Dim res As Variant
    res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)

    If IsError(res) Then
    res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    End If

    If IsError(res) Then
    taz = 0
    Else
    taz = res
    End If

    End Function

    Version 2:

    Function taz(a, b,c,d,e,f) As Variant
    Dim res As Variant
    res = Application.VLookup(a, Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)

    If IsError(res) Then
    res = Application.VLookup(a, Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)

    End If

    If IsError(res) Then
    taz = 0
    Else
    taz = res
    End If

    End Function

  2. #2
    Tom Ogilvy
    Guest

    RE: vlookup

    Function taz(a, b,c,d,e,f) As Variant
    Dim res As Variant
    With Worksheets("Jobs")
    res = Application.VLookup(a, _
    .Range(.Cells(c,d),.Cells(e,f)), b, 0)

    End With

    If IsError(res) Then
    taz = 0
    Else
    taz = res
    End If
    End With
    End Function

    You original function may work, but it doesn't need the second identical
    lookup:

    Function taz(a, b) As Variant
    Dim res As Variant
    res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)

    If IsError(res) Then
    taz = 0
    Else
    taz = res
    End If

    End Function


    --
    Regards,
    Tom Ogilvy

    "T De Villiers" wrote:

    >
    > this is my original function, works fine,
    > however the lookup range can vary greatly, 2nd version is below,
    > not quite working, help on this one is much appreciated
    >
    > Function taz(a, b) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > Version 2:
    >
    > Function taz(a, b,c,d,e,f) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    >
    > --
    > T De Villiers
    > ------------------------------------------------------------------------
    > T De Villiers's Profile: http://www.excelforum.com/member.php...o&userid=26479
    > View this thread: http://www.excelforum.com/showthread...hreadid=567917
    >
    >


  3. #3
    Dave Peterson
    Guest

    Re: vlookup

    What does not quite working mean?

    If it means that it only gives the correct answers if you recalculate the
    formula--not when any of the data changes, that's because excel doesn't know
    what the function depends on -- so it doesn't know when to recalculate.

    If that's not it, maybe it's the parms you're passing to the function.

    And I don't know what you're doing in either function, but you seem to be doing
    the same thing twice.

    Untested....

    Function taz(a, b,c,d,e,f) As Variant
    Dim res As Variant
    dim myRng as range

    set myrng = nothing
    on error resume next
    with worksheets("Jobs")
    set myrng = .range(.cells(c,d),.cells(e,f))
    on error goto 0

    if myrng is nothing then
    taz = "Error in c,d,e,f!"
    exit function
    end if

    'just for testing
    msgbox myrng.address(0,0)

    If IsError(res) Then
    taz = "error in vlookup" 'used to b 0
    Else
    taz = res
    End If

    End Function

    But I'm not sure what you're passing--I think I'd add some more validity
    checks. (Really, I'd just use the =vlookup() worksheet function.

    T De Villiers wrote:
    >
    > this is my original function, works fine,
    > however the lookup range can vary greatly, 2nd version is below,
    > not quite working, help on this one is much appreciated
    >
    > Function taz(a, b) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > Version 2:
    >
    > Function taz(a, b,c,d,e,f) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > --
    > T De Villiers
    > ------------------------------------------------------------------------
    > T De Villiers's Profile: http://www.excelforum.com/member.php...o&userid=26479
    > View this thread: http://www.excelforum.com/showthread...hreadid=567917

    res = Application.VLookup(a, myrng,b,0)

    If IsError(res) Then
    taz = "Error in Vlookup" 'used to be 0
    Else
    taz = res
    End If

    End Function

    I think I'd add some additional checks, too.



    T De Villiers wrote:
    >
    > this is my original function, works fine,
    > however the lookup range can vary greatly, 2nd version is below,
    > not quite working, help on this one is much appreciated
    >
    > Function taz(a, b) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > Version 2:
    >
    > Function taz(a, b,c,d,e,f) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > --
    > T De Villiers
    > ------------------------------------------------------------------------
    > T De Villiers's Profile: http://www.excelforum.com/member.php...o&userid=26479
    > View this thread: http://www.excelforum.com/showthread...hreadid=567917


    --

    Dave Peterson

  4. #4
    Dave Peterson
    Guest

    Re: vlookup

    What does not quite working mean?

    If it means that it only gives the correct answers if you recalculate the
    formula--not when any of the data changes, that's because excel doesn't know
    what the function depends on -- so it doesn't know when to recalculate.

    If that's not it, maybe it's the parms you're passing to the function.

    And I don't know what you're doing in either function, but you seem to be doing
    the same thing twice.

    Untested....

    Function taz(a, b,c,d,e,f) As Variant
    Dim res As Variant
    dim myRng as range

    set myrng = nothing
    on error resume next
    with worksheets("Jobs")
    set myrng = .range(.cells(c,d),.cells(e,f))
    on error goto 0

    if myrng is nothing then
    taz = "Error in c,d,e,f!"
    exit function
    end if

    'just for testing
    msgbox myrng.address(0,0)

    If IsError(res) Then
    taz = "error in vlookup" 'used to b 0
    Else
    taz = res
    End If

    End Function

    But I'm not sure what you're passing--I think I'd add some more validity
    checks. (Really, I'd just use the =vlookup() worksheet function.

    T De Villiers wrote:
    >
    > this is my original function, works fine,
    > however the lookup range can vary greatly, 2nd version is below,
    > not quite working, help on this one is much appreciated
    >
    > Function taz(a, b) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > Version 2:
    >
    > Function taz(a, b,c,d,e,f) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > --
    > T De Villiers
    > ------------------------------------------------------------------------
    > T De Villiers's Profile: http://www.excelforum.com/member.php...o&userid=26479
    > View this thread: http://www.excelforum.com/showthread...hreadid=567917

    res = Application.VLookup(a, myrng,b,0)

    If IsError(res) Then
    taz = "Error in Vlookup" 'used to be 0
    Else
    taz = res
    End If

    End Function

    I think I'd add some additional checks, too.



    T De Villiers wrote:
    >
    > this is my original function, works fine,
    > however the lookup range can vary greatly, 2nd version is below,
    > not quite working, help on this one is much appreciated
    >
    > Function taz(a, b) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a, Range("Jobs!$A$1:$F$65000"), b, 0)
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > Version 2:
    >
    > Function taz(a, b,c,d,e,f) As Variant
    > Dim res As Variant
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > If IsError(res) Then
    > res = Application.VLookup(a,
    > Range(Sheets("Jobs").Cells(c,d),Sheets("Jobs").Cells(e,f)), b, 0)
    >
    > End If
    >
    > If IsError(res) Then
    > taz = 0
    > Else
    > taz = res
    > End If
    >
    > End Function
    >
    > --
    > T De Villiers
    > ------------------------------------------------------------------------
    > T De Villiers's Profile: http://www.excelforum.com/member.php...o&userid=26479
    > View this thread: http://www.excelforum.com/showthread...hreadid=567917


    --

    Dave Peterson

  5. #5
    Forum Contributor
    Join Date
    08-20-2005
    Posts
    173
    Many Thanks Tom

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1