如果ColA中的单元格包含ColC中列表的子字符串,那么该字符串是否可以在ColB中返回?

时间:2015-10-21 22:51:51

标签: string excel if-statement

我在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是否可以提供多个值?

sample of spreadsheet

2 个答案:

答案 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)  

并复制以适应。