Solved

Automating VLookup

Posted on 2011-02-27
5
374 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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

729 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