匹配表

时间:2015-07-21 15:18:25

标签: vba

我正在寻求解决excel问题的方法。我建议在这里的VBA论坛上发布这个问题,虽然我认为这可以在excel上实现,如果没有excel(例如html或javascript等)可以更容易地完成,我也会接受其他想法。

这是我的excel表的示例图像。左边有三个值,如果这些三元组在表的任何行上完全存在,它应该给出1的正输出,如果不是0.

enter image description here

***仅当一行中所有三个值都存在时,输出才应为1。值可能不在相邻单元格中。

在excel论坛上,这些是建议的公式:

=IF(IF(COUNTIF($F$2:$I$6,"="&A2) >0,1,0) + IF(COUNTIF($F$2:$I$6,"="&B2) >0,1,0) + IF(COUNTIF($F$2:$I$6,"="&C2) >0,1,0) = 3,1,0)
=MIN(1,COUNTIF($F$2:$I$6,A2),COUNTIF($F$2:$I$6,B2),COUNTIF($F$2:$I$6,C2))

完全没有回答我的问题,因为他们寻找并匹配整个桌子上的值。

注意:我不了解VBA。

1 个答案:

答案 0 :(得分:1)

使用以下Worksheet

enter image description here

添加VBA模块,并将以下功能粘贴到...

Function MatchingOnRow(rngFind As Range, rngIn As Range) As Integer
Dim bFound As Boolean
For i = rngIn.Row To rngIn.Row + rngIn.Rows.Count
    For Each rngCheck In rngFind
        bFound = False
        For j = rngIn.Column To rngIn.Column + rngIn.Columns.Count
            If Cells(i, j).Value = rngCheck.Value Then
                bFound = True
                Exit For
            End If
        Next j
        If bFound = False Then Exit For
    Next rngCheck
    If bFound = True Then
        MatchingOnRow = 1
        Exit Function
    End If
Next i
MatchingOnRow = 0
End Function

然后在列D(第2行)中添加一个公式

=MatchingOnRow(A2:C2,$F$2:$I$6)

享受!