我有一个Excel电子表格,用于计算我们销售的产品的成本(恰好是汽车保险)。本产品根据各种信息计算;客户年龄,邮编,车辆,职业等等。
我在电子表格的主标签上输入信息,然后执行大量的vlookup公式,以返回电子表格其他标签中的相关数字。我的一个vlookup的例子是:
= VLOOKUP(G1,RatesInsurerX A36:B986786,2,FALSE)
因此,这会查找我输入到单元格G1中的值,并将其与工作簿选项卡上名为RatesInsurerX的数据相匹配。
正如你所看到的,这个特定的表包含近100万行,excel开始变得困难所以我想知道是否有一种方法可以完全相同的事情只对SQL表而不是RatesInsurerX工作簿执行查找?
答案 0 :(得分:7)
好消息是你可以在没有VBA
的情况下做到这一点,但步骤如下:
1。首先添加一个新工作表,将其称为有意义的内容,如PoscodeLookup
。
2。接下来转到Data
并选择Other Sources
和Microsoft Query
:
3。接下来选择(或创建)可以将您连接到数据库的ODBC数据源,然后选择此项(您可能需要输入user / pass)。
4。查询设计器将要求您选择一个表,只需单击“关闭”。
5。接下来选择SQL按钮:
6。现在输入SQL查询以获取所需的单个值,使用示例邮政编码,例如:
SELECT TOP 1 [Value] FROM [MyTable] WHERE [Postcode] = 'AB12 1AA';
7。现在点击OK和OK,它应该在窗口中返回一个值。
8。点击工具栏中的Return data
:
9。现在回到提示中的Excel命中属性:
10。现在将您输入的邮政编码更改为定义标签中的?
:
11。再次点击“确定”和“确定”,它将提示输入一个值,输入有效的邮政编码并点击“输入”,现在应该在单元格A1中为您提供所需的值。
12。现在点击单元格A1并转到Data
> Properties
然后Connection properties
:
13。现在在定义标签中,您在底部有一个
Parameters
按钮,在这里您可以填写如下:
注意,目标单元格是您输入邮政编码的单元格,如果您希望在邮政编码更改时重新运行查询,请勾选刷新框。
应该是它,如果它不起作用,请告诉我。
答案 1 :(得分:0)
你可以。在工作表的VBA中,创建一个如下函数:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
并且在它的身体
干杯 -