【问题标题】:Excel, conditional formatting column base on comparing two columnsExcel,基于比较两列的条件格式列
【发布时间】:2015-08-12 07:38:52
【问题描述】:

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

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

感谢您的解决方案,EXCEL 或 VBA 将不胜感激:)

【问题讨论】:

  • 试试isna(vlookup(string, table, ....))之类的东西作为你的条件格式条件?

标签: vba excel


【解决方案1】:

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

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

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

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

我希望这会有所帮助。

PS 您不需要使用 VBA 来执行此操作!事实上,使用公式可能更可取,因为如果单个值发生变化,它可能会导致颜色发生变化。

哈维

【讨论】:

    【解决方案2】:

    如果你想使用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
    

    【讨论】:

    • 如果它们不相等,您还需要更改颜色
    • 我认为提问者说的只是相同的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2013-11-15
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多