当前位置:编程学习 > VB >>

VB怎么实现两个EXCEL之间的数据对比?

有两个EXCEL文件,都有一个名字相同的列 SFID,存储身份证号码

VB怎么找出这两个 EXCEL中,具有SFID 相同的信息,并生成另外一个excel打印出来?

  excel1.xls   
----------------------   
| SFID | 姓名 | 性别 |
|------|------|------|   
| 123 | 张三 | 男 |   
|------|------|------|   
| 23 | 李四 | 男 |   
|------|------|------|
| 434 | 王五 | 男 |   
|------|------|------|   

excel1.xls
----------------------
| SFID | 姓名 | 性别 |   
|------|------|------|
| 123 | 张三 | 男 |
|------|------|------|   
| 54 | 小李 | 男 |
|------|------|------|   
| 987 | 小 张| 男 |
|------|------|------|


找出excel1和excel2中相同的数据,并生成excel3

最好有DEMO,另外加分 --------------------编程问答-------------------- 思路1:
1、将这两个Excel分别打开,把内容读入一个结构数组(这个结构体类型元素包含Excel的各个列。
2、生成一个新的Excel文件,并在后台打开之。
3、使用循环比较SFID列,如果相同,那么就将该数组元素存入2中生成的Excel文件。 --------------------编程问答-------------------- 思路2:
使用ADO对象打开Excel,在使用Sql语句联合查询两个Excel,生成新的Excel。 --------------------编程问答-------------------- 有DEMO吗? --------------------编程问答-------------------- 给你一个操作Excel的例子吧 --------------------编程问答-------------------- 这是抄来的是写的,读的 open代替add。

Dim objExcel As Excel.Application
Dim objWorkBook As Excel.Workbook
Dim objWorkSheet As Excel.Worksheet

Private Sub Form_Load()
    Rem Initialization of variables
    Set objExcel = New Excel.Application
    Set objWorkBook = objExcel.Workbooks.Add
    Set objWorkSheet = objWorkBook.Worksheets("Sheet1")
    Set objWorkSheet = objExcel.ActiveSheet

    objWorkSheet.Range("A1").Value = "Vadivel"
    objExcel.Visible = True ' The created excel workbook would be visible.
    objWorkBook.Close (True) 'This will fire the SaveAs dialog box
End Sub
--------------------编程问答-------------------- 用VBA来作吧,给你个参考的,自己修改下。在你需要用来打印的那个EXCEL里调用这个方法把,file1,file2 是你要比较的2个EXCEL的路径

Private Function FileCompare(file1 As String, file2 As String) As Boolean
    Dim wkb1 As Workbook
    Dim wkb2 As Workbook
    Dim endRow As Long
    Dim Count as long
    Dim tmpStr As String
    Set wkb1 = Workbooks.Open(file1)
    Set wkb2 = Workbooks.Open(file2)
    endRow = wkb1.Sheets(1).Cells(1, 1).SpecialCells(xlLastCell).row
    Count = 1
    For i = 1 To endRow
        tmpStr = wkb1.Sheets(1).Cells(i, 1)
        If not wkb2.Sheets(1).Columns(1).Find(tmpStr) Is Nothing Then
            ThisWorkbook.Sheets(1).Cell(Count,1) = tmpStr
            Count = Count + 1
        End If
     Next
End Function 


--------------------编程问答-------------------- 试过你们的,都不得~! --------------------编程问答-------------------- 就楼主的要求,实现起来不难。你按照思路去做就是了,剩下的只是敲键盘的事情了。动动手吧。 --------------------编程问答-------------------- Excel 是 VB Jet Engine 支持的外部数据库,当作数据库来查询即可。

--------------------编程问答-------------------- 把两个表复制到一个表,排序,查找和后面一个是不是相同...

不用编程也都在excel里面做好了.

编程就按数据库打开excel而已 --------------------编程问答-------------------- ...
很简单的,不需编程即可解决.
先打开这两个表,然后随便新建个EXCEL表, 然后在空格子中用VLOOKUP函数, 在VLOOKUP的向导中指定要搜索比较的数据(就是前面这两个表), 新的表就直接有数据了, 然后格式刷,Piu一下搞定.
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,