Solved

VBA - Vlookup formula - Codename of sheet for VLookup not working

Posted on 2011-03-17
2
736 Views
Last Modified: 2012-05-11
Experts,

How are you doing?

I have the following sub (See code and workbook below).

My issue is with line 14:
rng1.FormulaR1C1 = "=vlookup(RC[-1]," & CorrectedAgentIDName.[C1:C2].Address(External:=True, ReferenceStyle:=xlR1C1) & ",2,FALSE)"

Open in new window

This returns the following in Excel:

=VLOOKUP(A2,'Corrected ID-Name'!$C$1:$C$2,2,FALSE)

I want it to return:

=VLOOKUP(A2,'Corrected ID-Name'!A:B,2,FALSE)

So that it is looking up the value in A2 and finding that on sheet Corrected ID-Name (codename CorrectedAgentIDName) using column A:B, returning from column 2 (B) and False.

What do I need to change in the formula so that column A and B are used for the lookup table?

Thank you,
Kevin
Sub VLookUpAutomation()

Dim cell As Range
Dim rng1, rng2 As Range

Application.ScreenUpdating = False

' Select Sheet or set for just active sheet or provide combo box?
Columns("B:B").Insert Shift:=xlToRight ' Insert column for vlookup formula to reside
Range("B1").Value = "VL" ' Indicate which column is vlookup, by putting in text VL

' Set range for vlookup formula and fill down in column B
Set rng1 = Range("C2", Range("C2").End(xlDown)).Offset(, -1)
    rng1.FormulaR1C1 = "=vlookup(RC[-1]," & CorrectedAgentIDName.[C1:C2].Address(External:=True, ReferenceStyle:=xlR1C1) & ",2,FALSE)"
        
' Test for Error (#N/A), when found, copy cell to left (, -1) and to right (, 1) then paste on sheet 2
' Re-name (Name) Sheet 2 so that user changes will not effect which page "Corrected Names are Stored"
On Error Resume Next
For Each cell In rng1.SpecialCells(xlCellTypeFormulas, xlErrors)
    If cell.Value = CVErr(xlErrNA) Then
        With CorrectedAgentIDName
            If IsError(Application.Match(cell.Offset(, -1), .Columns(1), 0)) Then
                cell.Offset(, -1).Copy .Range("A" & Rows.Count).End(xlUp)(2)
                cell.Offset(, 1).Copy .Range("B" & Rows.Count).End(xlUp)(2)
            End If
        End With
    End If
Next cell
On Error GoTo 0

' Set range to vlookup values from B2:Bn - Copy Range
' PasteSpecial Values into C2:Cn
Set rng2 = Range("B2", Range("B2").End(xlDown))
    rng2.Copy
    Range("C2").PasteSpecial xlPasteValues

' Delete column B
Set rng2 = Range("B1", Range("B2").End(xlDown))
    rng2.Delete

    Columns("A:B").AutoFit ' Fit Columns A and B to be visible
    Range("A2").Select ' Set cursor at Cell "A2"

Application.ScreenUpdating = True

End Sub

Open in new window

EE-VBA-VLookUp-CodeName-ver-3.xls
0
Comment
Question by:redrumkev
[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
2 Comments
 
LVL 81

Accepted Solution

by:
zorvek (Kevin Jones) earned 500 total points
ID: 35161237
Change:

   rng1.FormulaR1C1 = "=vlookup(RC[-1]," & CorrectedAgentIDName.[C1:C2].Address(External:=True, ReferenceStyle:=xlR1C1) & ",2,FALSE)"

To:

   rng1.FormulaR1C1 = "=vlookup(RC[-1]," & CorrectedAgentIDName.[A:B].Address(External:=True, ReferenceStyle:=xlR1C1) & ",2,FALSE)"

Kevin
0
 
LVL 23

Author Comment

by:redrumkev
ID: 35162067
Kevin,

Ding, Ding, Ding, we have a 500 point winner!

Thank you!
Kevin
0

Featured Post

Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

Question has a verified solution.

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

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.
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…

710 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