假设我在Excel中的列中有两个单词对的列表。这些单词由空格分隔,因此典型的一对可能看起来像“极度幸福”。目标是在另一列中的较大字符串中搜索这些“bigrams”。问题是只有当两个单词在一起并用空格分隔时才能找到二元组。如果Excel可以在给定的较大字符串中的任何位置查找两个单词,那将更可取。至关重要的是,每个bigrams占用一个单元格,因为分数被分配给每个二元组,实际上该函数根据bigram单元格值使用VLOOKUP这个值。将任意两个单词之间的空格改为 - 或其他角色是否有意义?有没有办法让Excel一次查找每个值(可能通过识别这个字符并两次传递更大的字符串,即每个字一次)?
示例:“昨晚的天气非常寒冷,但温暖的火焰给了我一些快乐。”
在这里,我们希望在极端词中找到“极端”这个词,并在“幸福”这个词中找到。目前Excel不会成功这样做,因为它只是寻找“极度幸福”并确定不存在这样的字符串。
如果“极度幸福”下面的行中的二元组显示“天气已给出”(由于某种原因),Excel将检查较大的字符串中是否存在该二元组并返回第二个分数。这样做是为了最终可以将每个分数加在一起。
答案 0 :(得分:1)
使用几个公式可以很容易。见下面的截图:
逻辑很简单。假设您的二元组位于B1
,我们可以在C1
中输入以下内容。这将用*
替换空格,这是Excel的通配符。
=SUBSTITUTE(B2," ","*")
然后我们将它连接起来给我们一个通配符的开头和结尾。
=CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*")
然后我们使用一个简单的COUNTIF来反对该语句(在A1
中),以便向我们返回一个出现的计数。
=COUNTIF(A2,CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*"))
包含上述条件IF
的简单>0
支票可用于向我们提供Yes
或No
。
=IF(COUNTIF(A2,CONCATENATE("*",SUBSTITUTE(B2," ","*"),"*"))>0,"Yes","No")
如果有帮助,请告诉我们。