【发布时间】:2021-03-13 22:29:06
【问题描述】:
我正在尝试从查询 1 和 2 创建的 2 个子表中进行连接我尝试了许多不同类型的组合,但我不断收到错误,我该如何正确地做到这一点?下面的代码说我不支持表达式连接。
Sub test()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
StrFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & StrFile _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strsql = "(SELECT tab.Categoria AS cat1, sum(tab.Vo) AS somavo FROM [Fluxo de caixa$A1:P2638] tab GROUP BY tab.Categoria)"
strsql2 = "(SELECT tab2.Categoria AS cat2, sum(tab2.Vpago) AS somapg FROM [Fluxo de caixa$A1:P2638] tab2 GROUP BY tab2.Categoria)"
strsql3 = "SELECT cat1, cat2, somavo, somapg FROM " & strsql & " LEFT JOIN " & strsql2 & " ON cat1=cat2"
rs.Open strsql3, cn
If (rs.EOF) And (rs.BOF) Then
Exit Sub
Else
Sheets("aux").Range("a1:zz1048576").ClearContents
Sheets("aux").Range("a1").CopyFromRecordset rs
End If
rs.Close
cn.Close
End Sub
【问题讨论】:
-
如果这些来自工作表,为什么不直接使用数据 > 工具 > 合并查询?通过数据>工具>从表/范围添加源范围作为表格?您可以自行加入