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

我有两列分成两张单独的表。 首先, C1 ,我有1000行包含文本,在第二列C2我有2000行也包含文本。

我需要做的是select所有包含任何C1行中的所有文本的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 

最后,我想在第二个表中只select下面的单元格:

  C2 Eval 1 doc Eval 1 project 

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

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

然后根据“确定”来过滤数据。

问题是,该函数只适用于单个C1值,但不是如果我select整个C1列,我需要..

我也想使用VLOOKUP,但是我所需要的不是C2值与C1值完全匹配,但正如我之前所说, 至less包含C1单元的全部文本。

任何build议将不胜感激,

斯特凡诺

好吧,试试这个,这不是很好,但我认为它会为你工作:

将下面的代码添加到标准模块中的工作簿,并保存该工作簿

 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函数使用,这就是为什么它只被使用一次。 最后一个函数只是检查密钥是否在集合中。

第二个function是做这个工作。 它得到的值是检查并将每个单词加载到数组中,这是分割函数。 for循环向后考虑值,从原始值中除去单词,并根据集合中的键检查这个新值。 一个匹配返回1,我们退出函数,否则继续直到所有的单词被检查。