比较excel文件表格对应数据,标记出不同。

比较两个excel表格文件对应内容,标记出不同。两个表格里可能有一些关联的数据需要比对,比如都以编号为索引存储了相应的内容,有一些内容是相同的,但是可能因为种种原因,部分数据产生了错误等等,现在需要标记或更改,这也是例程的所要实现的目的。

测试条件:

表a文件,表b文件。两个文件都存储了以"行编号"为索引的相应内容。现在需要自动核对两个表中对应编号下的相应内容,标记出不同。

示例内容如下图所示:

VB代码如下:

‘表1
Dim scxls As Excel.Application
Dim scbook As Excel.Workbook
Dim scsheet As Excel.Worksheet
Dim celltext As String
‘表2
Dim scxls2 As Excel.Application
Dim scbook2 As Excel.Workbook
Dim scsheet2 As Excel.Worksheet
Dim celltext2 As String

Private Sub Command1_Click()
    ‘表1
    Set scxls = CreateObject("excel.application")
    Set scbook = scxls.Workbooks.Open("C:\Users\Administrator\Desktop\test\a.xlsx")
    Set scsheet = scbook.Worksheets(1)
    ‘表2
    Set scxls2 = CreateObject("excel.application")
    Set scbook2 = scxls2.Workbooks.Open("C:\Users\Administrator\Desktop\test\b.xlsx")
    Set scsheet2 = scbook2.Worksheets(1)
    Dim tmpstr As String
    Dim tmpstr2 As String
    Dim i As Integer
    Dim Row As Integer
    For i = 1 To 25
        With scsheet2.Range("a1:a25")   ‘表2,编号所在列
            tmpstr = Trim(scsheet.Cells(i, 1))
            If (Len(tmpstr) <> 3) Then GoTo continue    ‘校验编号长度,当前长度为3
            Set tar = .Find(tmpstr)
            If Not tar Is Nothing Then
                firstAddress = tar.Address
                Do
                    tmpstr2 = tar.Address(RowAbsolute:=False)
                    tmpstr2 = Mid(tmpstr2, 3)
                    Row = Val(tmpstr2)
                    ‘如果编号索引的表2第3列,和表1第2列不相同,标记表2数据。
                    If (scsheet2.Cells(Row, 3) <> scsheet.Cells(i, 2)) Then
                        ‘scsheet2.Cells(Row, 3) = scsheet.Cells(i, 2)
                        scsheet.Cells(i, 2).Interior.Color = RGB(34, 177, 76)      ‘标记表1
                        scsheet2.Cells(Row, 3).Interior.Color = RGB(237, 28, 36)    ‘标记表2
                        Debug.Print "表2:" & scsheet2.Cells(Row, 3).Address
                    End If
                    ‘如果编号索引的表2第5列,和表1第3列不相同,标记表2数据。
                    If (scsheet2.Cells(Row, 5) <> scsheet.Cells(i, 3)) Then
                        ‘scsheet2.Cells(Row, 5) = scsheet.Cells(i, 3)    ‘将表2数据与表1数据同步
                        scsheet.Cells(i, 3).Interior.Color = RGB(34, 177, 76)      ‘标记表1
                        scsheet2.Cells(Row, 5).Interior.Color = RGB(237, 28, 36)    ‘标记表2
                        Debug.Print "表2:" & scsheet2.Cells(Row, 5).Address
                    End If
                    Set tar = .FindNext(tar)
                Loop While Not tar Is Nothing And tar.Address <> firstAddress
            End If
continue:
        End With
    Next
    For Each w In scxls.Workbooks
        w.Save
    Next w
    For Each w In scxls2.Workbooks
        w.Save
    Next w
    scxls.Quit
    scxls2.Quit
    Set scbook = Nothing
    Set scxls = Nothing
    Set scbook2 = Nothing
    Set scxls2 = Nothing
End Sub

Private Sub Command2_Click()
    End
End Sub

执行结果图:

应用说明:

1.这是一个简单例程,实际应用中可能需要变更才能使用。

2.本例程中,对应的列数据是手动指定的,但是如果存在栏位名,这些完全也可以自动指定。如上所说,这只是一    个简单的例程,仅供参考,并不一定能实际应用。

备注:

  1.作者其实并不会VB编程。只是帮朋友忙,做了个简单测试,让行家见笑了。

时间: 2024-12-28 23:55:35

比较excel文件表格对应数据,标记出不同。的相关文章

如何通过node读取excel文件内的数据

通过node读取excel文件的数据非常的简单,需使用node-xlsx这个模块,下面请看代码 var xlsx = require('node-xlsx'); var fs = require('fs'); var sheets = xlsx.parse('./test/test.xlsx'); var arr = []; //sheets是一个数组,数组中的每一项对应test.xlsx这个文件里的多个表格,如sheets[0]对应test.xlsx里的“测试参数”这个表格,sheets[1]

C#创建Excel文件并将数据导出到Excel文件

C#创建Excel文件,这里实际上是从资源中提取一个事先创建好的Excel文件,文件提取成功后,使用OleDb方法连接Excel,向Excel文件中写入数据. 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加相关组件: 添加两个DataGridView,一个TextBox,两个按钮 ,如下图: 添加Excel资源: 先在文件夹中新建一个Excel文件,在Sheet1表的第一行设置列名: 双击"Resources.resx"文件打开资源文件视图: 添加

[Python]将Excel文件中的数据导入MySQL

Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已有的数据,还要添加一列,名为“at_company”,值为821. 流程 (1)获取excel文件列表,并根据excel文件名确定之后需要创建的table名: (2)连接mysql (3)创建table (4)插入数据 (5)断开连接 依赖模块 1. xlrd # to read excel fil

JEPLUS表格组件 数据标记——JEPLUS软件快速开发平台

JEPLUS表格组件 数据标记 我们在数据统计时需要对某些数据做一些标记,在JEPLUS中给我们提供了实现的快捷方式,我们可以快捷的操作来实现数据的标记,今天我来介绍下如何快速实现数据标记. 一.效果展示 二.实现步骤 1.在JEPLUS中提供一系列的字段类型供我们选择,我们可以选择创建时直接选择创建标记列 2.我们在创建表时也可以直接添加标记列. 3.创建完之后我们刷新就可以实现,当我们需要标记时我们就可以对数据进行标记,选择我们喜欢的颜色. 4.同时我们还可以通过标记来查询数据,这样很方便

用python读取带密码的excel文件中的数据

用python读取带密码的excel文件中的数据,程序代码如下: #filename:readingxls.py ''' 此程序的作用为:用python读取带密码的excel文件中的数据. 首先通过pip安装xlrd第三方库 pip3 install xlrd 请输入excel文件路径:D:\x1.xls ''' import xlrd path=input("请输入excel文件路径:") workbook=xlrd.open_workbook(path) b=len(workboo

python从Microsoft Excel文件中导入数据

excel中后缀为csv和xls,二者区别如下:1.xls 文件就是Microsoft excel电子表格的文件格式.2.csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中. 此文件,一行即为数据表的一行.生成数据表字段用半角逗号隔开.csv是文本文件,用记事本就能打开,XLS是二进制的文件只有用EXCEL才能打csv文件是以逗号为分隔符号,将各字段列分离出的一种ASCII文件.csv(*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值.工作表中所有的数

winfrom_导入Excel文件加载数据到datagridview并将数据保存到数据库

1.效果图: Excel表: winfrom界面: 主要先 选择Excel文件--->显示文件路径--->选择是那一个Excel表--->加载显示在下面的datagridview--->导入到数据库保存 2.点击 '选择Excel' 按钮事件: 1 private void btn_excel_Click(object sender, EventArgs e) 2 { 3 try 4 { 5 //获取Excel文件路径和名称   6 OpenFileDialog odXls = n

springMVC从上传的Excel文件中读取数据

示例:导入客户文件(Excle文件) 一.编辑customer.xlsx 二.编辑jsp(addCustomer3.jsp) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefi

解析Excel文件并把数据存入数据库

前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致总报同一个错,最后在同学的帮助下顺利解决,下面我把自己用"POI"解析的方法总结出来供大家参考(我用的是SpingMVC和hibernate框架). 1.web.xml中的配置文件 web.xml中的配置文件就按照这种方式写,只需要把"application.xml"换