将数组中的单词匹配为字符串

时间:2019-01-14 11:54:34

标签: excel excel-formula excel-2010

我有一个单元格,其中包含类似以下内容的描述

“客户喜欢踢板球和踢足球。”

然后在另一个工作表上,我列出了运动项目

手机/体育

  • A1:网球
  • A2:足球
  • A3:高尔夫
  • A4:拳击
  • A5:曲棍球
  • A6:板球

我需要遍历运动列表并匹配列表中的第一个运动,然后将其打印出来。以下是一些我想返回的示例。

描述/运动(在“名称管理器”中定义为“ SPORT_NAMES”)

  • “客户喜欢打板球和踢足球。” /足球(因为足球在A1中,而板球仅在A6中)
  • “客户今天在打高尔夫球。” /高尔夫
  • “我们今天要打网球还是打高尔夫球” /网球

我可以使用以下公式对每个单元格进行操作

= IF(ISNUMBER(SEARCH(Sports!A1,Data!A2)),“网球”,“”)

谢谢

基兰

2 个答案:

答案 0 :(得分:2)

我很确定有一种干净而不错的方法,但是至少,这个答案是可行的。

首先。我强烈建议您在屏幕快照中列出运动项目,并在辅助列中显示每个运动项目的重要性。通过这种方式,您可以根据需要重新排序或更改职位并记住优先级:

enter image description here

然后,我使用这个肮脏的公式得出结果:

=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IF(SEARCH('LIST OF SPORTS'!$B$2;Hoja1!A1)>0;'LIST OF SPORTS'!$B$2);IF(SEARCH('LIST OF SPORTS'!$B$3;Hoja1!A1)>0;'LIST OF SPORTS'!$B$3));IF(SEARCH('LIST OF SPORTS'!$B$4;Hoja1!A1)>0;'LIST OF SPORTS'!$B$4));IF(SEARCH('LIST OF SPORTS'!$B$5;Hoja1!A1)>0;'LIST OF SPORTS'!$B$5));IF(SEARCH('LIST OF SPORTS'!$B$6;Hoja1!A1)>0;'LIST OF SPORTS'!$B$6));IF(SEARCH('LIST OF SPORTS'!$B$7;Hoja1!A1)>0;'LIST OF SPORTS'!$B$7));"No sports found")

在Sheet1中,我得到了:

enter image description here

希望这可以帮助您。

答案 1 :(得分:2)

=INDEX($A$1:$A$6,MATCH(1,--ISNUMBER(SEARCH($A$1:$A$6,E1)),0))-这是一个数组公式(在仍位于窗口中时,使用 Ctrl + Shift + Enter 输入该公式公式栏)

使用双一元运算符将TRUE的{​​{1}} / FALSE结果分别转换为0或1。

然后我将ISNUMBER(SEARCH($A$1:$A$6,E1))用作MATCH()的返回值以获得适当的结果(它将始终是第一个出现的情况)

example