Vba 基于其他图纸中的相同值更改单元格的背景色
我试图根据表2中的同一组值更改表1中某些单元格的背景颜色 我希望它搜索表2到表1中的值,如果值相同,则颜色应根据我们给出的颜色代码进行更改。下面是sheet1(绿色)的屏幕截图,我想在其中应用格式,另一个是sheet2,我在其中提供输入 我已经得到了下面的代码,但它选择的单元格中的数据也不可用,请解释Vba 基于其他图纸中的相同值更改单元格的背景色,vba,excel,excel-formula,Vba,Excel,Excel Formula,我试图根据表2中的同一组值更改表1中某些单元格的背景颜色 我希望它搜索表2到表1中的值,如果值相同,则颜色应根据我们给出的颜色代码进行更改。下面是sheet1(绿色)的屏幕截图,我想在其中应用格式,另一个是sheet2,我在其中提供输入 我已经得到了下面的代码,但它选择的单元格中的数据也不可用,请解释 Option Explicit Public Sub tmpSO() Dim cell As Range For Each cell In Sheet1.Range("A1:
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
选项显式
公共事务小组
暗淡单元格作为范围
对于活页1.范围(“A1:B10”)中的每个单元格
如果cell.Value2.Sheet2.Cells(cell.Row,cell.Column).Value2则
cell.Interior.Color=vbRed
如果结束
下一个细胞
端接头
@Peh,请查看下面的屏幕截图,了解根据表2中的值,表1中我的输出应该是什么样的
输出(第1张)
输入(第2页)
您的代码运行正常。在表1中,它为
范围(“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
选项显式
公共事务小组
暗淡单元格作为范围
对于活页1.范围(“A1:B10”)中的每个单元格
如果cell.Value2.Sheet2.Cells(cell.Row,cell.Column)。Value2和_
cell.Value2 vbNullString然后
cell.Interior.Color=vbRed
如果结束
下一个细胞
端接头
更新问题的更新: 因此,您将需要第二个循环。第一个循环遍历要格式化的单元格,第二个循环遍历输入值,并将它们与第一个循环的每个单元格进行比较
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
选项显式
公共事务小组
Dim iCell作为范围,jCell作为范围
将范围设置为范围
设置FormatRange=Sheet1.Range(“A1:H11”)'要格式化的范围
Dim InputRange As范围
设置InputRange=Sheet2.Range(“B4:B10”)输入值的范围
对于FormatRange中的每个iCell
对于InputRange中的每个jCell
如果iCell.Value2=Sheet2.Cells(jCell.Row,jCell.Column)。Value2和_
iCell.Value2 vbNullString然后“将单元格与所有输入值进行比较,但忽略空单元格
iCell.Interior.Color=vbRed
退出“如果找到其他输入值,我们可以中止与其他输入值的比较”。
如果结束
下一个jCell
下一场冰雹
端接头
请告诉我您尝试过的代码,以及该代码的结果可能与重复,如果某个值与另一张表()相同,则Cells.Interior.Color=vbRed
快乐编码@请编辑您的原始帖子以包含代码-不要将其作为评论发布。这很有效,先生。但是,当我删除sheet2中的2个数字并运行代码时,它仍然通过对sheet2中没有的数字着色来显示旧的输出。例如:当我第一次运行代码时,我在表1中有1,2,3,4,5,在表2中有1,2,3,4,5,但当我从表2中删除5并在表1中清除格式并运行代码时,通过在表1中选择范围直到5,它仍然显示旧的put。请帮助。您的代码不会删除红色。您需要先删除所有单元格的颜色。您可以通过使用和手动执行来学习如何执行。我确实手动删除了颜色,但仍然显示相同的结果。我可能听起来很困惑,但我所需要的是,有一张表1,其中的值分散分布,然后有一张C列的表2,我在其中输入值。宏应能够根据表2中的值识别表1中的值,并更改表1中的颜色。我已经分享了有问题的截图,请检查。我不明白。你能展示一个屏幕截图结果应该是什么样子吗?我已经在原始问题中附上了输出和输入的屏幕截图。请检查。