Excel VBA 两个表中查询相同的记录、不同的记录 例程
本文将详细介绍如何使用 Excel VBA 在两个表中查询相同的记录、不同的记录。这个程序可以帮助用户快速地查询出两个表中的共同记录和不同记录,从而提高工作效率。
我们需要了解程序的基本结构。这个程序主要包括四个部分:Sheet1、Sheet2、Sheet3 和 VBA 代码。其中,Sheet1 和 Sheet2 是数据存放表,Sheet3 是查询结果显示表。VBA 代码是程序的核心,它负责连接数据库、执行查询语句和显示查询结果。
在 VBA 代码中,我们首先需要连接数据库。这里使用了 ADO 连接,需要对 ADO 进行引用,否则会出现错误提示。连接串的格式如下:
`conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0 Macro;HDR=YES';Data Source=" & ThisWorkbook.FullName`
接着,我们需要编写查询语句。查询语句的格式如下:
`sql = "select [Sheet1$].num_id from [Sheet1$],[Sheet2$] where [Sheet1$].num_id=[Sheet2$].num_id"`
这个查询语句将查询出两个表中相同的记录,並将结果显示在 Sheet3 中。
如果我们想查询出两个表中的不同记录,可以使用以下查询语句:
`sql = "select * from [Sheet1$] where [Sheet1$].num_id not in (select [Sheet2$].num_id from [Sheet2$])"`
这个查询语句将查询出 Sheet1 中存在但 Sheet2 中不存在的记录。
类似地,我们可以使用以下查询语句查询出 Sheet2 中存在但 Sheet1 中不存在的记录:
`sql = "select * from [Sheet2$] where [Sheet2$].num_id not in (select [Sheet1$].num_id from [Sheet1$])"`
我们可以使用以下查询语句查询出两个表中的所有不同记录:
`sql = "select num_id from [Sheet1$] where [Sheet1$].num_id not in (select [Sheet2$].num_id from [Sheet2$]) union select num_id from [Sheet2$] where [Sheet2$].num_id not in (select [Sheet1$].num_id from [Sheet1$])"`
这个查询语句将查询出两个表中的所有不同记录,並将结果显示在 Sheet3 中。
本文详细介绍了如何使用 Excel VBA 在两个表中查询相同的记录、不同的记录。这个程序可以帮助用户快速地查询出两个表中的共同记录和不同记录,从而提高工作效率。
1