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

Match words from array into a string

我有一个包含如下描述的单元格

"customer enjoys playing cricket and football."

然后在另一个工作表上我有一个运动列表

电池/运动

我需要遍历运动列表并匹配列表中的第一个运动,然后打印它。以下是我想要 return.

的一些示例

描述/运动(这些在'Name Manager'下定义为'SPORT_NAMES')

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

=IF(ISNUMBER(SEARCH(Sports!A1,Data!A2)), "Tennis", "")

谢谢,

基兰

我很确定有一种干净漂亮的方法可以做到这一点,但至少,这个答案会奏效。

首先。我强烈建议您按照我的屏幕截图列出运动项目,并在辅助栏中显示每项运动的重要性。这样您就可以根据需要重新排序或更改位置并记住优先级:

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

=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B);IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B));IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B));IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B));IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B));IF(SEARCH('LIST OF SPORTS'!$B;Hoja1!A1)>0;'LIST OF SPORTS'!$B));"No sports found")

在 Sheet1 中我得到了这个:

希望对您有所帮助。

=INDEX($A:$A,MATCH(1,--ISNUMBER(SEARCH($A:$A,E1)),0)) - 这是一个数组公式(使用Ctrl+Shift+[=25=输入公式]在公式栏中输入)

通过使用双一元运算符,您可以将 ISNUMBER(SEARCH($A:$A,E1))TRUE / FALSE 结果分别转换为 0 或 1。

然后我使用 MATCH() 作为 INDEX() 的 return 值以获得适当的结果(这将始终是第一次出现)