【发布时间】:2019-07-14 08:36:19
【问题描述】:
有两个不同的工作表,我想突出显示 sheet1 中与 sheet2 中完全相同的文本值匹配的单元格。
Sheet1 是每日生产计划,因此有 [名称、订单数量、说明] 以及 14 天列。
Sheet2 是我们为其提供材料的产品列表。当我用谷歌搜索时,我找不到完全相同的情况。我尝试在下面编写代码,但它不起作用。
在 Sheet2 中,产品列表位于“C”列,我有 1582 项。 您的帮助将不胜感激。
Sub Highlights()
Dim sh1 As Worksheet
Set sh1 = ThisWorkbook.Sheets("Sheet1")
Dim sh2 As Worksheet
Set sh2 = ThisWorkbook.Sheets("Sheet2")
Dim lastRowNumber As Long, lastColumnNumber As Long
lastRowNumber = sh1.Range("A1", sh1.Range("A1").End(xlDown)).Rows.Count
lastColumnNumber = sh1.Range("A1", sh1.Range("A1").End(xlToRight)).Columns.Count
Dim i As Long, j As Long, x As Long
For j = 1 To lastRowNumber
For i = 1 To lastColumnNumber
For x = 3 To 1584
If sh1.Cells(j & i) = sh2.Cells(x, 3) Then
sh1.Cells(j, i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
Next
Next
End Sub
【问题讨论】:
-
您的代码不起作用的主要原因是
sh1.Cells(j & i)应该是sh1.Cells(j, i)。也就是说,对于任何大小的数据集,这将是非常缓慢的。考虑转换为变体数组方法。 SO上有很多例子