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 表上使用参数化查询