如何在范围内搜索匹配值?

时间:2018-02-01 22:55:01

标签: excel excel-vba vba

我在Excel中有一个范围如下:

  | Symptom       | Number|  
1 | back pain     | 7     |  
2 | neck pain     | 583   |  
3 | shoulder pain | 5098  |  
4 | eye pain      | 23467 |  
5 | back pain     | 23    |  
6 | neck pain     | 65756 |  
7 | shoulder pain | 234   |  
8 | eye pain      | 98    |

我想根据症状中的值将Number中的值相互比较。例如,症状出现在症状两次,所以我希望23与7比较。在确定哪个更大时,我希望症状的第二个实例为红色或绿色,如果其数量大于第一个实例,则为红色,绿色,如果它更小。

最初我尝试编写具有2个范围的代码,一个包含每个症状的第一个实例,另一个范围包含每个症状的第二个实例。我尝试在For Each循环中编写For Each循环,但不允许这样做,所以我不知道如何继续。我的代码:

Sub RankColor()
    Dim SelecRng As Range
    Dim OrgNumOld As Integer
    Dim SearchTerm As String

    Set SelecRngOld = Application.Selection
    Set SelecRngOld = Application.InputBox("Range", SelecRng, Type:=8)

    Set SelecRngNew = Application.Selection
    Set SelecRngNew = Application.InputBox("Range", SelecRng, Type:=8)

    For Each cell In SelecRngOld
    Set SearchTerm = cell.Value
    OrgNumOld = Cells(cell.Row, 2).Value
        For Each cell in SelecRngNew
            If Cells(cell.Row, 2) > OrgNumOld Then 'Compares the
            Cells(cell.Row, 2).Color = RGB(256, 0, 0)
            ElseIf Cells(cell.Row, 2) > OrgNumOld Then
            Cells(cell.Row, 2).Color = RGB(0, 256, 0)
            End If
        End If
        Next
    Next

End Sub

1 个答案:

答案 0 :(得分:2)

创建两个条件格式规则。

红色:

=AND(INDEX($B:$B,MATCH($A1,$A:$A,0))<$B1,MATCH($A1,$A:$A,0)<>ROW())

绿色:

=AND(INDEX($B:$B,MATCH($A1,$A:$A,0))>$B1,MATCH($A1,$A:$A,0)<>ROW())

两者都应该适用于$B:$B

enter image description here