使用Excel中的VBA比较两个电子表格上的行(以及这些行中的单元格),突出显示差异

神圣

我正在尝试在工作簿中使用两张纸,并突出显示Sheet2中与Sheet1不同的单元格。工作表的范围可以从少量的行到数百行。我将很乐意回答任何问题,我以前从未使用过VBA,但是我有其他语言的经验。

它需要按Sheet2的行,然后按当前行中的单元格。以该行的第一个单元格为例,查看该单元格的内容是否存在于Sheet1中,如果该单元格的内容不存在,则将整个行突出显示为新条目。如果内容确实出现在Sheet1中,请遍历条目在每个工作表中显示的行的每个单元格,并仅突出显示Sheet2上的更改。

到目前为止我所知道的一切:

Sub DetectChanges()
Rem compares two sheets by row. let sheet1 be the old one and sheet2 be the new one.
Rem *hopefully* highlights any differences. Make column1 unique identifiers
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
For Each rw In ws2.Rows

' check identifier for active row & detect changes
Next

End Sub

感谢您的任何帮助!

用户名

在OP澄清后进行编辑

此(注释)代码应使您以正确的方式进行操作:

Option Explicit

Sub DetectChanges()
    Dim ws1 As Worksheet, ws2 As Worksheet '<-- explicitly declare each variable type
    Dim ws1Data As Range, f As Range, cell As Range
    Dim icol As Long

    Set ws1Data = Worksheets("Sheet01").Columns(1).SpecialCells(xlCellTypeConstants) '<-- set a range with Sheet1 cells containing data

    With Worksheets("Sheet02") '<--| reference Sheet2
        For Each cell In Intersect(.UsedRange, .Columns(1)).SpecialCells(xlCellTypeConstants) '<-_| loop through its column "A" non blank cells
            Set f = ws1Data.Find(what:=cell.value, LookIn:=xlValues, LookAt:=xlWhole) '<--| search for current cell value in Sheet1 data
            If f Is Nothing Then '<--| if not found then...
                Intersect(cell.EntireRow, .UsedRange).Interior.ColorIndex = 3 '<--| highlight current cell entire row
            Else
                For icol = 1 To .Range(cell, .Cells(cell.Row, .Columns.Count).End(xlToLeft)).Columns.Count - 1 '<--| loop through Sheet2 current cell row
                    If f.Offset(, icol) <> cell.Offset(, icol) Then '<--| if it doesn't match corresponding cell in Sheet1
                        cell.Offset(, icol).Interior.ColorIndex = 3 '<--| highlight Sheet2 not-matching cell
                        f.Offset(, icol).Interior.ColorIndex = 3 '<--| highlight Sheet1 not-matching cell
                    End If
                Next icol
            End If
        Next cell
    End With
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel VBA:在两个电子表格中删除整个行

想要通过应用程序脚本与两个不同的谷歌电子表格中存在的每个单元格的值进行比较,但出现错误

使用 Pandas 更新 Excel 电子表格中的单个单元格

使用 JavaScript 从 Excel 电子表格中检索单元格值

谷歌电子表格:比较两个单元格并提取不同的单词

比较excel中两个不同电子表格的列并将结果放在第三个电子表格中

如何通过引用两个单元格自动命名电子表格?

比较两个电子表格并使用Google App脚本输出差异

遍历并比较Python中的电子表格单元格

在Google电子表格的一行中搜索两个或多个单词

使用Microsoft Excel 2013中的记录号合并两个电子表格

电子表格中显示单元格的doGet(e)

读取 Excel 电子表格并格式化单元格中的文本

用于更新现有 Excel 电子表格中的单元格的 R 包

Excel电子表格单元格中的未知符号

电子表格中没有RuleTable单元格-Excel文件和DRT

在Excel(2007)电子表格中以连续数字的形式填充单元格

使用api在Google电子表格的特定列末尾附加一个新单元格(行)

如果单元格与Excel中的计数器单元格匹配,是否可以自动将行提取到另一个电子表格中?

Google电子表格条件格式-如果值大于则突出显示单元格

比较openpyxl中两个电子表格中的一列

如何根据行中单元格的值设置电子表格中行的背景颜色

将列值转置为 Google 电子表格中合并单元格的行

在Google电子表格上基于1个单元格移动一行并确认第二个单元格不为空

使用带有Win32 :: OLE的Perl修改Excel电子表格中的单元格范围

使用EPPlus将文本添加到Excel电子表格中的合并单元格

是否可以使用JavaScript从Excel电子表格中获取特定的单元格值?

使用AXLSX gem将几种样式应用于Excel电子表格中的单元格

比较工作簿中的两个电子表格,找到差异并将差异记录在第一个电子表格中