我使用两个具有相同逻辑但语法不同的查询来查询我的Excel工作表。
rs.Open "SELECT * FROM [Sheet1$] WHERE [Sheet1$].ID NOT IN(SELECT [Sheet2$].ID FROM [Sheet2$] WHERE [Sheet2$].[ID] IS NOT NULL)", cn, adOpenKeyset, adLockReadOnly
rs.Open "SELECT * FROM [Sheet1$] LEFT JOIN [Sheet2$] ON [Sheet1$].ID=[Sheet2$].ID WHERE [Sheet2$].CUSIP IS NULL ", cn, adOpenKeyset, adLockReadOnly
With Worksheets("Sheet3$")
.Range("A2:H2" & lastrow).Cells.ClearContents
.Cells(2, 1).CopyFromRecordset rs
End With
我想使用查询2现在我看到来自查询2的记录遍布整个工作表,就像我看到的记录的第一个实例位于第26000行。如何将所有这些记录整合在一起?
答案 0 :(得分:1)
我认为你的第二个查询缺少另一个命令。像AND [Sheet1$].ID IS NOT NULL
这样的东西。
它并非真正随机显示,它不会跳过NULL
中的[Sheet1$]
值。
试试这样:
rs.Open "SELECT * " & _
"FROM [Sheet1$] " & _
"LEFT JOIN [Sheet2$] " & _
"ON [Sheet1$].ID=[Sheet2$].ID " & _
"WHERE [Sheet2$].ID IS NULL " & _
"AND [Sheet1$].ID IS NOT NULL;", _
cn, adOpenKeyset, adLockReadOnly
您可能还想要check this link out。