查找其他单元格中至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,我们退出函数,否则继续直到所有的单词被检查。