首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用countif/sumif和串联词来表示在查询的不同位置上出现的单词?

如何使用countif/sumif和串联词来表示在查询的不同位置上出现的单词?
EN

Stack Overflow用户
提问于 2016-12-27 23:00:51
回答 3查看 447关注 0票数 0

我在使用Excel和VBA。我有一个搜索查询列表和一个搜索查询中出现的单词列表。我试图找到一种方法来获得一个特定单词出现在其中的查询计数,以及一个特定单词出现的查询的成本和收益之和。我用的是countif和sumif,还有嵌套的级联公式。我试图找出如何将单词出现在搜索查询中的所有实例--单独,在开头、中间或结尾--都包括在内--但同时也希望排除单词作为较长单词的一部分出现的实例。下面是一个例子:

假设这个词是“沙子”,以下是搜索查询:

“沙”

“供出售的沙子”

“在哪里买沙子出售”

“买散沙”

“火腿三明治”

每个搜索查询都有相关的成本和收入。我可以使用串联函数捕获包含“沙子”的查询,包括以下每一个内容:(如果“沙子”一词在单元格A1中)

待售”串联(A1,“","*")

“何处购买出售”(“*”、“”、“A1”、“”、“*")

“购买散装”串联(“*”、“”、“A1”)

如果我做了一个countif或sumif指向没有空格和*之前或之后的A1,它将包含用于“火腿三明治”搜索查询的值。那么,我该如何包含仅由单词组成的搜索查询,而不需要前后空格呢?

EN

回答 3

Stack Overflow用户

发布于 2016-12-28 00:34:57

您可以使用带有word边界标记的正则表达式。单词边界标记检测单词字符和非单词字符(或字符串或行的开头或结尾)之间的边界。在VBA正则表达式中,一个单词字符在A-Za-z0-9_类中。

下面这样的内容将返回一个布尔值,指示SearchWord是否存在于SearchString中:

代码语言:javascript
复制
Option Explicit
Function regexFind(SearchWord As String, SearchString As String) As Boolean
    Dim RE As Object

Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = False
    .Pattern = "\b" & SearchWord & "\b"
    .ignorecase = True
    regexFind = .test(SearchString)
End With

End Function
票数 1
EN

Stack Overflow用户

发布于 2016-12-28 00:01:59

至于一个简单的解决方案,像这样的方法是可行的,而且不包括火腿三明治。

代码语言:javascript
复制
=COUNTIF(A1:A5;A1)+COUNTIF(A1:A5;"* "&A1&" *")+COUNTIF(A1:A5;"* "&A1)+COUNTIF(A1:A5;A1&" *")

其中A1是计算在本例中的字符串“沙子”。

票数 0
EN

Stack Overflow用户

发布于 2016-12-28 00:09:28

.+ COUNTIF(range,"sand")

请注意,如果您已经尝试过,但它不起作用,您可能有“沙子”,您认为您有“沙子”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41353261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档