Solved

Automating VLookup

Posted on 2011-02-27
5
366 Views
Last Modified: 2012-05-11
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
Comment
Question by:jvera524
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 30

Expert Comment

by:SiddharthRout
ID: 34991906
Will the number of rows increase or the columns?

Sid
0
 

Author Comment

by:jvera524
ID: 34991959
number of rows
0
 
LVL 30

Expert Comment

by:SiddharthRout
ID: 34992015
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
 

Author Comment

by:jvera524
ID: 34992319
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
 
LVL 30

Accepted Solution

by:
SiddharthRout earned 500 total points
ID: 34992341
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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn different types of Android Layout and some basics of an Android App.
How to get Spreadsheet Compare 2016 working with the 64 bit version of Office 2016
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question