包含SQL表的Excel vlookup

时间:2014-01-07 16:53:00

标签: sql excel excel-vba vba

我有一个Excel电子表格,用于计算我们销售的产品的成本(恰好是汽车保险)。本产品根据各种信息计算;客户年龄,邮编,车辆,职业等等。

我在电子表格的主标签上输入信息,然后执行大量的vlookup公式,以返回电子表格其他标签中的相关数字。我的一个vlookup的例子是:

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

因此,这会查找我输入到单元格G1中的值,并将其与工作簿选项卡上名为RatesInsurerX的数据相匹配。

正如你所看到的,这个特定的表包含近100万行,excel开始变得困难所以我想知道是否有一种方法可以完全相同的事情只对SQL表而不是RatesInsurerX工作簿执行查找?

2 个答案:

答案 0 :(得分:7)

好消息是你可以在没有VBA的情况下做到这一点,但步骤如下:

1。首先添加一个新工作表,将其称为有意义的内容,如PoscodeLookup

2。接下来转到Data并选择Other SourcesMicrosoft Query

Microsoft Query

3。接下来选择(或创建)可以将您连接到数据库的ODBC数据源,然后选择此项(您可能需要输入user / pass)。

4。查询设计器将要求您选择一个表,只需单击“关闭”。

Click Close

5。接下来选择SQL按钮:

SQL button

6。现在输入SQL查询以获取所需的单个值,使用示例邮政编码,例如:

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

7。现在点击OK和OK,它应该在窗口中返回一个值。

8。点击工具栏中的Return data

Return data

9。现在回到提示中的Excel命中属性:

Properties prompt

10。现在将您输入的邮政编码更改为定义标签中的?

Edit Query

11。再次点击“确定”和“确定”,它将提示输入一个值,输入有效的邮政编码并点击“输入”,现在应该在单元格A1中为您提供所需的值。

12。现在点击单元格A1并转到Data> Properties然后Connection properties

Properties

Connection properties

13。现在在定义标签中,您在底部有一个Parameters按钮,在这里您可以填写如下:

Parameters

注意,目标单元格是您输入邮政编码的单元格,如果您希望在邮政编码更改时重新运行查询,请勾选刷新框。

应该是它,如果它不起作用,请告诉我。

答案 1 :(得分:0)

你可以。在工作表的VBA中,创建一个如下函数:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

并且在它的身体

  • 检查目标是您要查找的单元格(G1)
  • 如果是,请从数据库中获取数据并将其放在需要的位置

干杯 -