我在使用Excel和VBA。我有一个搜索查询列表和一个搜索查询中出现的单词列表。我试图找到一种方法来获得一个特定单词出现在其中的查询计数,以及一个特定单词出现的查询的成本和收益之和。我用的是countif和sumif,还有嵌套的级联公式。我试图找出如何将单词出现在搜索查询中的所有实例--单独,在开头、中间或结尾--都包括在内--但同时也希望排除单词作为较长单词的一部分出现的实例。下面是一个例子:
假设这个词是“沙子”,以下是搜索查询:
“沙”
“供出售的沙子”
“在哪里买沙子出售”
“买散沙”
“火腿三明治”
每个搜索查询都有相关的成本和收入。我可以使用串联函数捕获包含“沙子”的查询,包括以下每一个内容:(如果“沙子”一词在单元格A1中)
“砂待售”串联(A1,“","*")
“何处购买砂出售”(“*”、“”、“A1”、“”、“*")
“购买散装砂”串联(“*”、“”、“A1”)
如果我做了一个countif或sumif指向没有空格和*之前或之后的A1,它将包含用于“火腿三明治”搜索查询的值。那么,我该如何包含仅由单词组成的搜索查询,而不需要前后空格呢?
发布于 2016-12-28 00:34:57
您可以使用带有word边界标记的正则表达式。单词边界标记检测单词字符和非单词字符(或字符串或行的开头或结尾)之间的边界。在VBA正则表达式中,一个单词字符在A-Za-z0-9_类中。
下面这样的内容将返回一个布尔值,指示SearchWord是否存在于SearchString中:
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发布于 2016-12-28 00:01:59
至于一个简单的解决方案,像这样的方法是可行的,而且不包括火腿三明治。
=COUNTIF(A1:A5;A1)+COUNTIF(A1:A5;"* "&A1&" *")+COUNTIF(A1:A5;"* "&A1)+COUNTIF(A1:A5;A1&" *")其中A1是计算在本例中的字符串“沙子”。
发布于 2016-12-28 00:09:28
.+ COUNTIF(range,"sand")
请注意,如果您已经尝试过,但它不起作用,您可能有“沙子”,您认为您有“沙子”
https://stackoverflow.com/questions/41353261
复制相似问题