excel 2010 vba。 sql查询列'like' vlookup

Posted

技术标签:

【中文标题】excel 2010 vba。 sql查询列\'like\' vlookup【英文标题】:excel 2010 vba. sql query over columns 'like' vlookupexcel 2010 vba。 sql查询列'like' vlookup 【发布时间】:2013-03-12 14:55:12 【问题描述】:

我有一个“Filename.accdb”(2010) 文件,与 Excel 的 VBA 建立了连接。

假设在文件中我有一个 TableA:

Column1 Column2 Worker
------- ------- -------
Text1   Text2   15
Text3   Text4   4
...
Text5   Text6   20

还有一个 TableB:

ID      Name
------- -------
1       Name1
4       Name4
15      Name15
...
20      Name20

我能够将这些表格导入工作表,但我想要实现的是:

想要的查询结果(我不想要整个TableA):

Column1 Worker
------- -------
Text1   Name15
Text3   Name4
...
Text5   Name20

目前,我分别导入两个表,然后将“名称”列的值写入“工人”列。我通过 for 循环和函数 Vlookup(...) 实现了这一点。 它速度快而且效果很好,那我的问题是什么?

嗯,它会生成大量代码,我相信它一定可以通过 sql 查询来实现。 另外,我想我会从中学到很多东西,因为我对 sql 还是很陌生。

到目前为止,这是我的字符串...

sql = "SELECT TableA.Column1, TableA.Worker, TableB.Name " & _
      "FROM TableA " & _
      "LEFT JOIN TableB " & _
      "ON TableB.ID = TableA.Worker"

它不起作用并抛出“......无法在多个字段上执行连接错误......” 我在互联网上找不到适合我的解决方案。

有人看到问题了吗? 我做错了什么?

提前致谢 干杯

【问题讨论】:

【参考方案1】:

TableB.ID 是一个数字列,你要从你的描述中得到的列是 Name:

sql = "SELECT TableA.Column1, TableA.Worker, TableB.Name " & _
      "FROM TableA " & _
      "LEFT JOIN TableB " & _
      "ON TableB.Name = TableA.Worker"

请注意,名称不是列名的好选择。在 MS Access 中测试您的查询总是明智的,查询设计窗口是一个很好的起点。

【讨论】:

好的,谢谢,我会试试,但我们的网络目前已关闭。 不起作用,一段时间后我放弃了。甚至可能是 Access 无法处理此类查询,而且我太缺乏经验,不知道。

以上是关于excel 2010 vba。 sql查询列'like' vlookup的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA-Excel 跨多个数据库进行 SQL 查询

Excel VBA 更新 SQL 表

使用 VBA 在 Excel 中的 SQL 表上使用参数化查询

VBA/SQL 参数化查询 - 字段列表中的未知列

来自 Access 的 Excel VBA SQL 没有结果

excel2010 sql完全应用怎么样