查找其他单元格中至少存在相同文本的单元格(Excel)

时间:2013-11-08 09:58:52

标签: excel find vlookup

我有两列分成两个单独的表格。在第一个C1中,我有1000行包含文本,在第二列C2中我有2000行也包含文本。

我需要做的是选择所有C2行,其中至少(确切地说)包含在任何C1行中的所有文本。

例如,假设数据是这样的:

    C1         C2
Eval 1      Eval 101 doc
Eval 1      Eval 1 project
Eval 100    Eval 1 doc
Ev 1        Eval 19
Eval1       Ev 2

最后,我想在第二张表中仅选择以下单元格:

    C2
Eval 1 doc
Eval 1 project

我对Excel不是很熟悉,但是我产生了以下功能:

=IF(ISNUMBER(FIND(<C1 cell>, <C2 cell>)),"OK", "Not OK")

然后它应该只是根据“OK”过滤数据。

问题是该函数仅适用于单个C1值,但如果我根据需要选择整个C1列,则不会...

我还想过使用VLOOKUP,但是我需要的不是C2值与C1值完全匹配,但正如我之前所说的那样至少包含C1单元格的整个文本..

任何建议都将受到高度赞赏,

斯特凡诺

1 个答案:

答案 0 :(得分:1)

好的,试试这个,它不是很好,但我认为它对你有用:

将以下代码添加到标准模块中的工作簿中,然后保存工作簿

Public LookInCollection As New Collection

Function SetUpCollection(range)
'Load data into collection
    On Error Resume Next
    For Each Cell In range
        LookInCollection.Add 1, Cell.Text
    Next
    On Error GoTo 0
End Function

Function MatchValue(Value)
    Dim ValueArray As Variant
    Dim Lenght As Long

    ValueArray = Split(Value, " ")

    'Loop String backwars remving words each time
    For i = 0 To UBound(ValueArray)
        If InCollection(Left(Value, Len(Value) - Lenght)) Then
            MatchValue = 1
            Exit Function
        End If
        Lenght = Len(ValueArray(UBound(ValueArray) - i)) + 1
    Next

    MatchValue = 0    'Cound not match
End Function

Private Function InCollection(Key) As Variant
    On Error Resume Next
    InCollection = LookInCollection(Key)
End Function

接下来在第2列的页面上添加一个像这样的公式

  

= SetUpCollection(Column1_Range)

然后在C2中的每个单元格旁边添加forumla,

  

=匹配值(ReftoCelltoCheck)


根据评论更新

代码有3个部分。第一个函数构建一个由main函数使用的集合,这就是它只使用一次的原因。最后一个函数只是检查密钥是否在集合中。

第二个功能完成工作。它获取值以检查并将每个单词加载到数组中,这是split函数。 for循环向后工作,考虑值,从原始值中删除单词并根据集合中的键检查此新值。匹配返回1并退出函数,否则继续,直到检查完所有单词。