VBA - 带有单元格引用的SQL查询

时间:2013-11-06 15:55:28

标签: excel vba excel-vba

我一直在研究一种新工具,我需要它根据单元格相等的内容运行查询。

例如,

我在excel中有3个具有数据验证的单元格。 C4:系 C5:集团 C6:分类

基本上如果选择了(全部),则运行第一个查询,否则运行第二个查询。 我需要Group根据单元格的内容运行查询:

If Sheets("Rollup").Range("C5").Value = "(All)" Then
Sheets("Codes").Range("B3:XFD1048576").Clear
        cn.Open SQLServerConnString
        strQuery = "Select DEPT_CATG_GRP_DESC from dbo.Rollup GROUP BY DEPT_CATG_GRP_DESC ORDER BY DEPT_CATG_GRP_DESC"
        Set rs = cn.Execute(strQuery)
        Sheets("Codes").Range("B3").CopyFromRecordset rs
        rs.Close
        cn.Close
Else Sheets("Codes").Range("B3:XFD1048576").Clear
        cn.Open SQLServerConnString
        strQuery = "Select DEPT_CATG_GRP_DESC WHERE DEPT_CATG_GRP_DESC = C5.Value from dbo.Rollup GROUP BY DEPT_CATG_GRP_DESC ORDER BY DEPT_CATG_GRP_DESC"
        Set rs = cn.Execute(strQuery)
        Sheets("Codes").Range("B3").CopyFromRecordset rs
        rs.Close
        cn.Close
End If

2 个答案:

答案 0 :(得分:4)

您的SQL字符串只是一个字符串。您必须在值中连接以构建所需的字符串。

 strQuery = "Select DEPT_CATG_GRP_DESC WHERE DEPT_CATG_GRP_DESC = " & Sheets("Rollup").Range("C5").Value & " from dbo.Rollup GROUP BY DEPT_CATG_GRP_DESC ORDER BY DEPT_CATG_GRP_DESC

答案 1 :(得分:0)

我在Power Query中嵌入了SQL代码。我在Excel工作表中有一个命名单元格。我已经成功引用了该单元格并将其用作电源查询中的过滤器:

YAWafer = Excel.CurrentWorkbook(){[Name="YAWafer"]}[Content]{0}[Column1]  

我无法弄清楚如何将该参数“馈入”嵌入式SQL代码-即,嵌入到成功使用该参数作为过滤器的同一Power Query中的代码。

根据我在这些帖子中看到的想法,我尝试了许多不同的方法,但是没有成功。我的主要动机是将该参数输入到嵌入式SQL代码中,并将其用作预先过滤器。