Vba 如何比较两个不同工作表上的两个不同列并突出显示差异?
我希望能够比较两个工作表,并在ws1上的H列和ws2上的F列中的日期存在差异时突出显示ws2上的单元格。我遇到的问题是,它们是两个不同的列,从两个不同的单元格开始(比较ws1上的H9+和ws2上的F10+),这没有给我错误,但似乎什么都没有发生。以下是我到目前为止的情况:Vba 如何比较两个不同工作表上的两个不同列并突出显示差异?,vba,excel,Vba,Excel,我希望能够比较两个工作表,并在ws1上的H列和ws2上的F列中的日期存在差异时突出显示ws2上的单元格。我遇到的问题是,它们是两个不同的列,从两个不同的单元格开始(比较ws1上的H9+和ws2上的F10+),这没有给我错误,但似乎什么都没有发生。以下是我到目前为止的情况: Sub matchMe() Dim wS As Worksheet, wT As Worksheet Dim r1 As Range, r2 As Range Dim cel1 As Range, cel2 As Range
Sub matchMe()
Dim wS As Worksheet, wT As Worksheet
Dim r1 As Range, r2 As Range
Dim cel1 As Range, cel2 As Range
Set wS = ThisWorkbook.Worksheets("Project Status Report L3")
Set wT = ThisWorkbook.Worksheets("Demand Mapping - Active")
With wS
Set r1 = .Range("H9", .Cells(.Rows.Count, .Columns("R:R").Column).End(xlUp))
End With
With wT
Set r2 = .Range("F10", .Cells(.Rows.Count, .Columns("G:G").Column).End(xlUp))
End With
On Error Resume Next
For Each cel1 In r1
With Application
Set cel2 = .Index(r2, .Match(cel1.Value, r2, 0)) 'find match in sheet2
If Err = 0 Then
If cel1.Offset(, 8) <> cel2.Offset(, 8) Then cel2.Interior.ColorIndex = 1 'if difference, color
End If
Err.Clear
End With
Next cel1
Sub matchMe()
将wS设置为工作表,将wT设置为工作表
调光r1为量程,r2为量程
调光cel1作为范围,cel2作为范围
设置wS=ThisWorkbook.Worksheets(“项目状态报告L3”)
Set wT=ThisWorkbook.Worksheets(“需求映射-活动”)
与wS
设置r1=.Range(“H9”),.Cells(.Rows.Count、.Columns(“R:R”).Column).End(xlUp))
以
带wT
设置r2=.Range(“F10”),.Cells(.Rows.Count、.Columns(“G:G”).Column).End(xlUp))
以
出错时继续下一步
对于r1中的每个cel1
应用
设置cel2=.Index(r2.Match(cel1.Value,r2,0))'在sheet2中查找匹配项
如果Err=0,则
如果cel1.Offset(,8)cel2.Offset(,8),则cel2.Interior.ColorIndex=1'如果差异,则为颜色
如果结束
呃,明白了
以
下一个cel1
End Sub我不久前在网上找到了这段代码,它应该可以满足您的需要。只需将shtBefore和shtAfter设置为工作表名称
Sub compareSheets(shtBefore As String, shtAfter As String)
Dim mycell As Range
Dim mydiffs As Integer
For Each mycell In ActiveWorkbook.Worksheets(shtAfter).UsedRange
If Not mycell.Value = ActiveWorkbook.Worksheets(shtBefore).Cells(mycell.Row, mycell.Column).Value Then
mycell.Interior.Color = vbYellow
mydiffs = mydiffs + 1
End If
Next
MsgBox mydiffs & " differences found", vbInformation
ActiveWorkbook.Sheets(shtAfter).Select
End Sub
为什么不使用而不是
.Index
?很有用,但遗憾的是,我需要一些针对特定列的内容,因为我正在比较两个具有不同字段的独立报告,这意味着整个工作表的颜色一般都是“不同的”。但是谢谢!你可以试着改变范围吗?可能会添加工作表(ShtAfter).Range(G:G)
或将整个工作表的范围缩小到您需要的列
Sub comparison()
For i = 2 To 1000
For j = 2 To 1000
If Worksheets(Worksheet).Range("A" & i).Value = Worksheets(Worksheet).Range("L" & j).Value Then
Worksheets(worksheet).Range("N" & j).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next j
Next i
End Sub