VBA将单元格值与列的所有值进行比较

时间:2018-09-21 09:48:00

标签: vba excel-vba

我正在尝试将列(column1)的每个单元格与另一列(column2)中的所有单元格进行比较,如果该值存在于column2中。并且如果它存在于column1中,而clumn3中的同一行则显示为“ TRADABLE”以突出显示它。

使用此代码,它仅将值与r2比较,而不与整个列r比较,而且我不知道如何更改

Sub mark_cells()


ActiveSheet.Range("D2").Select
    Do Until ActiveCell.Value = ""
        If ActiveCell.Value = Range("R2").Value And ActiveCell.Offset(0, -2).Value = "TRADABLE" Then
        ActiveCell.Interior.ColorIndex = 46


        End If

    ActiveCell.Offset(1, 0).Select

    Loop

2 个答案:

答案 0 :(得分:0)

您可以使用工作表匹配公式来做到这一点。

Sub mark_cells()

    dim i as long

    with activesheet

        for i =2 to .cells(.rows.count, "D").end(xlup).row

            if not iserror(application.match(.cells(i, "D").value, .range("R:R"), 0)) and _
               ucase(.cells(i, "B").value2) = "TRADABLE" then

                .cells(i, "D").Interior.ColorIndex = 46

            end if
        next i

    end with

end sub

更动态的方法是条件格式设置规则。

Sub mark_cells()

    With activesheet.range(.cells(2, "D"), .cells(.rows.count, "D").end(xlup))
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=and(C2="TRADABLE", isnumber(match(d2, r:r, 0)))"
        .FormatConditions(.FormatConditions.Count).Interior.ColorIndex = 46
    End With

end sub

答案 1 :(得分:0)

将以下公式插入c1=if(countif(a:a;b1) >=1; "Tradable"; "")并将其粘贴粘贴到下面的单元格中。