我在ColC中有一个词干列表,我想通过ColA搜索:
(1)单元格是否包含一个子串? (2)它包含哪个子字符串?
我可以通过各种方式提出第一个问题,包括:
=INDEX(C2:C25,MATCH(FALSE,ISERROR(FIND("*"&C2:C25&"*",A2)),0))
我不能做第二次,并将值返回ColB。
例如,A2 abacavir
包含列表中的vir
(C25)。我希望B2说vir
,而不是' true'或者' 1'。
此外,如果ColA中的单元格包含列表中的多个值,ColB是否可以提供多个值?
答案 0 :(得分:0)
VBA在这里可能最容易。插入模块并将下面的代码粘贴到其中。然后确保选择数据所在的工作表,然后运行名为" stem"的宏。
Sub stem()
Dim stem As String
Dim lastRow As Long
Dim f As Variant
Dim fRow As Long
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
i = 2
With ActiveSheet
Do
stem = .Cells(i, 3).Value
With .Range("A1:A" & lastRow)
Set f = .Find(stem, LookIn:=xlValues)
If Not f Is Nothing Then
fRow = f.Row
ActiveSheet.Cells(fRow, 2).Value = stem
End If
End With
i = i + 1
Loop Until .Cells(i, 3) = ""
End With
End Sub
答案 1 :(得分:0)
我同意VBA看起来可能是最方便的整体,但肯定没有。使用Paste Special ...,Transpose删除C1并将C2:C25复制到其中。填充C2:
=IF(ISNUMBER(MATCH("*"&C$1&"*",$A2,0)),C$1,"")
复制到Z2,然后C2:Z2降低到适合。然后,您应该有一个矩阵,其中包含在哪个字符串中找到的词干。
要在ColumnB中获取结果,请使用类型的长级联公式:
=TRIM(C2&" "&D2&" "&E2&" "&F2&" "&G2&" "& ... &Z2)
并复制以适应。