2015-07-13 29 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