Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 基于其他图纸中的相同值更改单元格的背景色_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 基于其他图纸中的相同值更改单元格的背景色

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:

我试图根据表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
选项显式
公共事务小组
暗淡单元格作为范围
对于活页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中的颜色。我已经分享了有问题的截图,请检查。我不明白。你能展示一个屏幕截图结果应该是什么样子吗?我已经在原始问题中附上了输出和输入的屏幕截图。请检查。