VBA语言写了一个程序,实现一张表格里面两张sheet的内容比较。
作为硬件产品开发者,在产品开发阶段,BOM整理,对比检查是非常重要的一环,然而设计更迭,物料更新的情况经常发生,导致BOM也面临多次修改。空闲的时候,我写了一个BOM对比工具,它可以实现到位号级别的差异对比。使用的是EXCEL自带的VBA语言,文件已经放在网盘链接里面,有兴趣的小伙伴可以直接下载修改。由于不怎么写代码,程序可以比较冗长,但功能基本实现,可以作为借鉴。
通过网盘分享的文件:BOM_check_tool_ v3_2 for 07to19.xlsm
链接: https://pan.baidu.com/s/1pPIeoK1ojWhhl_EanXwziA?pwd=2gry 提取码: 2gry
另外,平时积累了一些简洁的代码,在这里做个记录,方便查询与回忆:
下面是一个使用VBA编写的程序,用于比较两张工作表中的内容,并根据你的要求将不一致的单元格字体颜色更改为红色。
Sub CompareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow1 As Long, lastRow2 As Long
Dim i As Long, j As Long
Dim cell1 As Range, cell2 As Range
Dim foundCell As Range
Dim key As String
' 设置工作表
Set ws1 = ThisWorkbook.Sheets("Sheet1") ' 第一张工作表
Set ws2 = ThisWorkbook.Sheets("Sheet2") ' 第二张工作表
' 获取第一张工作表的最后一行
lastRow1 = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
' 获取第二张工作表的最后一行
lastRow2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row
' 遍历第一张工作表的每一行
For i = 1 To lastRow1
key = ws1.Cells(i, 1).Value ' 获取第一列的值作为基准
' 在第二张工作表中查找相同的项目
Set foundCell = ws2.Columns(1).Find(What:=key, LookIn:=xlValues, LookAt:=xlWhole)
If Not foundCell Is Nothing Then
' 如果找到相同的项目,比较第2到第5列的内容
For j = 2 To 5
Set cell1 = ws1.Cells(i, j)
Set cell2 = ws2.Cells(foundCell.Row, j)
' 如果内容不一致,将第二张工作表中的单元格字体颜色更改为红色
If cell1.Value <> cell2.Value Then
cell2.Font.Color = RGB(255, 0, 0)
End If
Next j
End If
Next i
MsgBox "比较完成!"
End Sub
代码说明:
-
工作表设置:代码中假设第一张工作表名为
Sheet1,第二张工作表名为Sheet2。你可以根据实际情况修改这些名称。 -
查找基准列:代码以第一张工作表的第一列作为基准,在第二张工作表的第一列中查找相同的项目。
-
比较内容:如果找到相同的项目,代码会比较第2到第5列的每个单元格内容。如果内容不一致,第二张工作表中的对应单元格字体颜色将变为红色。
-
消息提示:比较完成后,会弹出一个消息框提示“比较完成!”。
使用方法:
-
打开Excel工作簿,按
Alt + F11打开VBA编辑器。 -
在VBA编辑器中,插入一个新模块(
Insert > Module)。 -
将上述代码粘贴到模块中。
-
关闭VBA编辑器,返回Excel。
-
按
Alt + F8,选择CompareSheets宏并运行。
运行后,程序会比较两张工作表中的内容,并将不一致的单元格字体颜色更改为红色。

浙公网安备 33010602011771号