我正在尝试根据工作表2中的同一组值更改工作表1中某些单元格的背景颜色。
我希望它能够搜索工作表2到工作表1中的值,如果值相同则颜色应根据我们给出的颜色代码进行更改。下面是sheet1(绿色)的屏幕截图,我想要应用格式,其他是sheet2是我输入的地方
我在下面有这个代码,但它正在选择数据不可用的单元格,请解释。
Option Explicit
Public Sub tmpSO()
Dim cell As Range
For Each cell In Sheet1.Range("A1:B10")
If cell.Value2 <> Sheet2.Cells(cell.Row, cell.Column).Value2 Then
cell.Interior.Color = vbRed
End If
Next cell
End Sub
@Peh,请根据sheet2中的值检查下面的屏幕截图,了解我的输出在sheet1中应该是什么样的。
输出(Sheet1)
输入(Sheet2)
答案 0 :(得分:1)
您的代码运行正常。在第1页中,它将Range("A1:B10")
的每个单元格与第2页不同。如果您不希望第1页的空单元格被着色,则还需要检查空单元格。
Option Explicit
Public Sub tmpSO()
Dim cell As Range
For Each cell In Sheet1.Range("A1:B10")
If cell.Value2 <> Sheet2.Cells(cell.Row, cell.Column).Value2 And _
cell.Value2 <> vbNullString Then
cell.Interior.Color = vbRed
End If
Next cell
End Sub
更新更新的问题: 因此,您需要第二个循环。第一个循环遍历要格式化的单元格,第二个循环遍历输入值并将它们与第一个循环的每个单元格进行比较。
Option Explicit
Public Sub tmpSO()
Dim iCell As Range, jCell As Range
Dim FormatRange As Range
Set FormatRange = Sheet1.Range("A1:H11") 'the range you want to format
Dim InputRange As Range
Set InputRange = Sheet2.Range("B4:B10") 'the range where your input values are
For Each iCell In FormatRange
For Each jCell In InputRange
If iCell.Value2 = Sheet2.Cells(jCell.Row, jCell.Column).Value2 And _
iCell.Value2 <> vbNullString Then 'compare cell with all input values but left out empty cells
iCell.Interior.Color = vbRed
Exit For ' we can abort compairing with other input values if one is found.
End If
Next jCell
Next iCell
End Sub