Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Excel vlookup incorporating SQL table

Tags:

sql

excel

vba

I have an Excel spreadsheet which I use to calculate the cost of a product we sell, (happens to be car insurance). This product is calculated based on various pieces of information; the customers age, postcode, vehicle, occupation, etc etc.

I enter information onto the main tab of my spreadsheet and then perform lots of vlookup formulas to return the relevant figures from other tabs of the spreadsheet. An example of one of my vlookups is:

=VLOOKUP(G1,RatesInsurerX!A36:B986786,2,FALSE)

So this looks up the value I enter into cell G1 an matches it to the data found on the workbook tab called RatesInsurerX.

As you can see this particular table contains nearly 1 million rows and excel is starting to struggle so I was wondering if there is a way of doing exactly the same thing only performing the lookup against a SQL table rather than the RatesInsurerX workbook?

like image 898
RumDemon Avatar asked Feb 15 '23 04:02

RumDemon


1 Answers

Good news is you can do this without VBA, quite a few steps though as follows:

1 . First add a new sheet, call this something meaningful like PoscodeLookup.

2 . Next go to Data and select Other Sources and Microsoft Query:

Microsoft Query

3 . Next select (or create) an ODBC data source that can connect you to your database asd select this (you may need to enter user/pass).

4 . The query designer will ask you to select a table, just click close.

Click Close

5 . Next select the SQL button:

SQL button

6 . Now enter the SQL query to get the single value you need, using an example postcode eg:

SELECT TOP 1 [Value] FROM [MyTable] WHERE [Postcode] = 'AB12 1AA';

7 . Now hit OK and OK which should return a single value in the window.

8 . Click on Return data in the toolbar:

Return data

9 . Now back in Excel hit properties in the prompt:

Properties prompt

10 . Now change the post code you entered into a ? in the definition tab:

Edit Query

11 . Hit OK and OK again and it will prompt for a value, enter a valid postcode and hit enter, this should now give you the value you want in cell A1.

12 . Now click in the cell A1 and go to Data > Properties then Connection properties:

Properties

Connection properties

13 . Now in the definition tab you have a Parameters button at the bottom, in here you can fill out as below:

Parameters

Note, the target cell is the cell where you enter the postcode, tick the refresh box if you want this to re-run the query when the post code changes.

That should be it, let me know if it doesn't work.

like image 69
bendataclear Avatar answered Feb 20 '23 06:02

bendataclear