2015-07-13 182 views
-1

希望得到以下问题的帮助。我需要根据特定的词汇表清理文本。找不到特定的公式(不是VBA)在Excel中执行此操作(在其他线程中搜索未成功)。谢谢 enter image description hereExcel公式清理停用词语

+1

既然你不能使用VBA,你将需要使用嵌套的'SUBSTITUTE'的。 –

+0

谢谢大家的指导,我可以理解替代函数的逻辑,但是= SUBSTITUTE(A3,C2:C4,“”)只会用“无”代替“are”。嵌套替代品在这里扮演什么角色? –

+0

你有巢的替代品。替代者不会接受数组。所以它会像'= substitute(替代(替代(a3,c2,“”),c3,“”),c4,“”)''。很多名字都很笨拙。 –

回答

0

这里是一个VBA UDF使用正则表达式来替换文本中的所有StopWords,没有任何东西。它通过使用单词边界标记来处理部分单词匹配的问题。例如,如果you是一个停用词,它将不会替代you,但将忽略your。它也将替换停用词后面的任何空格。


Option Explicit 
Function CleanStopWords(S As String, StopWords As Range) 
    Dim RE As Object 
    Dim SW() As String 
    Dim C As Range 
    Dim I As Long 

ReDim SW(1 To StopWords.Count) 
For I = 1 To StopWords.Count 
    SW(I) = StopWords(I) 
Next I 

Set RE = CreateObject("vbscript.regexp") 
With RE 
    .Global = True 
    .ignorecase = True 

    'create pattern using the StopWords 
    .Pattern = "\b(?:" & Join(SW, "|") & ")\b\s*" 

    CleanStopWords = .Replace(S, "") 
End With 

End Function