在Excel中查找列表的第一个和第二个匹配项

时间:2016-09-25 10:10:23

标签: excel excel-formula

我在列中有文本单元格,我有一个单词列表,我需要使用不带vba的公式在单词列表中获取文本单元格的第一个和第二个匹配。

here is an example of the result

2 个答案:

答案 0 :(得分:1)

如果您的文本单元格在A2中开头,则:

First Match  B2:  =IFERROR(MID($A2,AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A)),FIND(" ",$A2&" ",AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A)))-AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A))),"")

并填写一个单元格以获得第二场比赛。然后根据需要填写。

enter image description here

编辑: OP增加了一项额外的要求,即排除单词中的单词,例如,如果单词为also,则不要找Calso;并且也不要返回标点符号。

虽然公式很麻烦,但这可以通过处理   - 用space替换所有标点符号   - 在句子的开头和结尾添加空格   - 在LIST中的每个单词的开头和结尾添加空格   - 调整公式以不返回额外空间。

通过修改定义的名称LIST以及使用公式的定义名称来执行标点符号替换以及空格前缀和后缀,可以最简单地完成上述操作。

鉴于上述示例,我们重新定义LIST

LIST refers to: =" " & Sheet1!$F$2:$F$6 & " "

并且,如果选择第2行中的某个单元格,我们会定义theSentence

theSentence refers to:  =" " & TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(Sheet1!$A10,","," "),"'"," "),"."," "),"!"," "))& " "

该特定定义将删除逗号,撇号,句号和感叹号。如果您需要删除其他标点符号,则可以嵌套更多SUBSTITUTE'

我们在B2中的公式中进行了一些更改:

B2: =IFERROR(MID(theSentence,1+AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A)),FIND(" ",theSentence,1+AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A)))-AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A))-1),"")

答案 1 :(得分:1)

这是问题的第二种解释(在文本的任何地方找到字符串列表中的第一个和第二个匹配)。

=IFERROR(INDEX($F$2:$F$6,SMALL(IF(ISNUMBER(FIND(" "&$F$2:$F$6&" "," "&$A2&" ")),ROW($F$2:$F$6)-ROW($F$1)),COLUMNS($A1:A1))),"")

请注意,这是一个数组公式,必须使用 Ctrl Shift 输入

输入

enter image description here