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

 

 

 

代码说明:

  1. 工作表设置:代码中假设第一张工作表名为Sheet1,第二张工作表名为Sheet2。你可以根据实际情况修改这些名称。

  2. 查找基准列:代码以第一张工作表的第一列作为基准,在第二张工作表的第一列中查找相同的项目。

  3. 比较内容:如果找到相同的项目,代码会比较第2到第5列的每个单元格内容。如果内容不一致,第二张工作表中的对应单元格字体颜色将变为红色。

  4. 消息提示:比较完成后,会弹出一个消息框提示“比较完成!”。

使用方法:

  1. 打开Excel工作簿,按Alt + F11打开VBA编辑器。

  2. 在VBA编辑器中,插入一个新模块(Insert > Module)。

  3. 将上述代码粘贴到模块中。

  4. 关闭VBA编辑器,返回Excel。

  5. Alt + F8,选择CompareSheets宏并运行。

运行后,程序会比较两张工作表中的内容,并将不一致的单元格字体颜色更改为红色。

posted @ 2025-02-21 09:15  小小+王  阅读(118)  评论(0)    收藏  举报