在excel-Vba中收集分散的记录

时间:2015-03-26 19:35:11

标签: excel vba excel-vba

我使用两个具有相同逻辑但语法不同的查询来查询我的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行。如何将所有这些记录整合在一起?

1 个答案:

答案 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