Excel,条件格式化列基于比较两列

时间:2015-08-12 07:38:52

标签: excel vba excel-vba

我有excel工作表,有两张。第一个(工作表1)是大表(大约2000行),在第二个(工作表2)中我只有大约20行。

我需要检查,如果工作表1中每行的第一列中的字符串已经在工作表2中,如果是,则将其设为绿色。

感谢您提供解决方案,EXCEL或VBA都将受到赞赏:)

2 个答案:

答案 0 :(得分:0)

在工作表1中,您需要创建一个新列(比如列AA),该列使用公式VLOOKUP在另一个工作表中查找相同的数据(如果存在)。如果未找到,则VLOOKUP将返回错误#N / A.所以你的公式会看起来像:

IF(ISERROR(VLOOKUP(A2,' Sheet2'!$ SA $ 1:$ X $ 9999,3,false)),"未找到"," FOUND&# 34)

然后,您将向sheet1列A添加条件格式,该列引用新列(AA)中的值并相应地设置颜色。

如果您不知道如何使用VLOOKUP或使条件格式化工作,互联网上有大量资源可以帮助您学习这些内容。例如youtube频道ExcelisFun,WiseOwl.co.uk。

我希望这会有所帮助。

PS你不需要使用VBA来做到这一点!事实上,使用foumula可能是优选的,就好像单个值改变它可以导致颜色改变。

哈维

答案 1 :(得分:0)

如果您想使用VBA,请尝试以下操作:

Public Sub findDuplicate()

    Dim sh1row, sh2Row As Long

    For sh1row = 1 To 20 'loop all row from Sheet2 (if more than 20, modify it)

        For sh2Row = 1 To 2000 'loop all row from Sheet1 (if more than 2000, modify it)

            'If A cell are equal
            If Sheets("Sheet1").Range("A" & sh2Row) = Sheets("Sheet2").Range("A" & sh1row) Then

                'Change background color to green.
                Sheets("Sheet1").Range("A" & sh2Row).Interior.Color = RGB(0, 255, 0)

            End If

        Next sh2Row

    Next sh1row

End Sub