将数组中的单词匹配到字符串中
Match words from array into a string
我有一个包含如下描述的单元格
"customer enjoys playing cricket and football."
然后在另一个工作表上我有一个运动列表
电池/运动
- A1:网球
- A2:足球
- A3:高尔夫
- A4:拳击
- A5:曲棍球
- A6:板球
我需要遍历运动列表并匹配列表中的第一个运动,然后打印它。以下是我想要 return.
的一些示例
描述/运动(这些在'Name Manager'下定义为'SPORT_NAMES')
- "customer enjoys playing cricket and football."/Football(因为Football在A1,cricket只在A6)
- "customer is playing golf today." / 高尔夫
- "shall we play tennis or golf today" / 网球
我可以使用以下公式对每个单元格执行此操作
=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 值以获得适当的结果(这将始终是第一次出现)
我有一个包含如下描述的单元格
"customer enjoys playing cricket and football."
然后在另一个工作表上我有一个运动列表
电池/运动
- A1:网球
- A2:足球
- A3:高尔夫
- A4:拳击
- A5:曲棍球
- A6:板球
我需要遍历运动列表并匹配列表中的第一个运动,然后打印它。以下是我想要 return.
的一些示例描述/运动(这些在'Name Manager'下定义为'SPORT_NAMES')
- "customer enjoys playing cricket and football."/Football(因为Football在A1,cricket只在A6)
- "customer is playing golf today." / 高尔夫
- "shall we play tennis or golf today" / 网球
我可以使用以下公式对每个单元格执行此操作
=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 值以获得适当的结果(这将始终是第一次出现)