[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 399
  • Last Modified:

Automating VLookup

Hello,

I was able to record a macro which used a vlookup.  The problem I am facing is that the range in the vlookup will change from day to day.  How do I set and update the range for the vlookup formula when the macro is run? Please let me know if any information is needed. Thanks for the help.

0
jvera524
Asked:
jvera524
  • 3
  • 2
1 Solution
 
SiddharthRoutCommented:
Will the number of rows increase or the columns?

Sid
0
 
jvera524Author Commented:
number of rows
0
 
SiddharthRoutCommented:
Then it shouldn't be a problem.

Two ways to achieve what you want.

Here is an example

Let' s say the current VBA Code is

Sub Sample()
    Range("F2").Formula = "=Vlookup(C1,$C$1:$E$10,3,0)"
End Sub

Open in new window


You can change that to

1) Amend the formula to take the entire column into account. So the above becomes

Sub Sample()
    Range("F2").Formula = "=Vlookup(C1,C:E,3,0)"
End Sub

Open in new window


2) Or this to take realistic rows into account.

Sub Sample()
    Dim LastRow As Long
    LastRow = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
    Range("F2").Formula = "=Vlookup(C1,$C$1:$E$" & LastRow & ",3,0)"
End Sub

Open in new window


Sid

0
 
jvera524Author Commented:
Below is some code.  I am trying use what you gave above in a for loop. It gives a complie error on the bolded line Thank you for the help.

    Dim cls As Range
    Dim cl As Integer
    Dim LastRow As Long
   
    Sheets("Data").Select
    Range("A2").Select
    Set cls = Cells(Rows.Count, "A").End(xlUp)
    LastRow = Sheets("Yesterday").Range("BM" & Rows.Count).End(xlUp).Row
       
    For cl = 2 To cls.Row + 1
       Cells(cl, "BP").Formula "=Vlookup(Cells(cl,"BM"),Sheets("Yesterday").Range($BM$2:$BM$" &     LastRow & ",1,False)"
    Next
0
 
SiddharthRoutCommented:
Is this what you are trying to do?

Sub Sample()
    Dim cls As Long
    Dim cl As Long, LastRow As Long
   
    cls = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
    
    LastRow = Sheets("Yesterday").Range("BM" & Rows.Count).End(xlUp).Row
    
    For cl = 2 To cls
        '~~> I am assuming that you want to put the formula in Cell BP
        '~~> Of Sheet Data
        Sheets("Data").Range("BP" & cl).Formula = _
        "=Vlookup(BM" & cl & ",Yesterday!$BM$2:$BM$" & LastRow & ",1,False)"
    Next
End Sub

Open in new window


Sid
0

Featured Post

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now