Excel - 匹配选项列表中的子字符串 - INDEX,MATCH和FIND一起使用

时间:2017-04-29 05:06:09

标签: excel excel-formula excel-2010 spreadsheet string-matching

我想在视频节目列表中搜索特定的电影标题,搜索MATCH,然后使用Index返回其描述。我知道这可以通过A列过滤器中的文本搜索来完成,但我想用公式来完成。

**编辑:我认为这个问题的第一个版本让我觉得我只有几部电影和片头。这些统计数据可能有所帮助:

Column A: 2,000 Total Video Titles (movie titles can appear more than once)
Column E: 50 Movie Titles
Column F: 50 Movie Descriptions

示例:

Video titles (2000)             Movie Titles    Movie Description
Spiderman Review and BTS        Spiderman   Spiderman_description
Dark Knight clips               Star Wars   Star Wars_description
Fun Fact Star Wars              Dark Knight Dark Night_description
Why I love Dark Knight                  
Dark Knight highlight                   
Always watch dark knight alone      

在B2中,我可以输入

=if(isnumber(find("Spiderman",A2)),index(F2:F4,match("Spiderman",E2:E4,0)))

然后我可以为每部电影重复这个公式,但到目前为止,完整列表超过50部电影。我想创建这样的东西:

{Index($F$2:$F$4,match(TRUE,isnumber(find($E$2:$E$4,A2)),0))}

这样,我搜索A2以查看FIND是否从列表中返回任何匹配项,然后使用INDEX返回描述。但这个公式不起作用。我哪里出错了?

2 个答案:

答案 0 :(得分:7)

两个想法,

1)在column B中添加帮助列,并在column C中获取说明。 enter image description here

column B中的公式,

=MATCH("*"&E2&"*",A:A,0)

column C中的公式,

=INDEX(E:F,MATCH(ROW(),B:B,0),2)

2)使用简单的index match公式进行相反的操作, enter image description here

column G中的公式(原始标题),

=INDEX(A:A,MATCH("*"&E2&"*",A:A,0),1)

答案 1 :(得分:0)

在我看来,单靠公式无法解决这个问题 使用VBA可能会这样做。

首先,添加一个新模块。

其次,添加以下功能:

Function GetRow(xCell As Range, xRange As Range)
    i = 2
    Do
        If Cells(i, xRange.Column).Value = "" Then
            Exit Do
        ElseIf InStr(1, Cells(xCell.Row, xCell.Column).Value, Cells(i, xRange.Column).Value) > 0 Then
            GetRow = Cells(i, xRange.Column + 1).Value
        End If
        i = i + 1
    Loop
End Function

第三,在B列的所有行中添加公式:

=GetRow($A7; E:E)