2016-12-21 8 views
1

私は次のループで作業しています。私は、またはblacklists certain words in VBAを省略した場合があります。しかし、私は3文字未満の単語を省略したいと思います。X文字未満の単語を省略するように大文字小文字を設定する方法

For i = 0 To UBound(words, 1) 
    Select Case words(i) 
     Case = "and","or","big","small","whatever else you want to add" 
     Case Else 
      For Each phrase In phrases 
       If InStr(1, phrase.Value, words(i)) Then 
        matches = matches & phrase & "/" 
       End If 
      Next phrase 
    End Select 
Next i 

誰でも知っていますか?私はCase => "[something for 3 characters]"を追加コードとともに挿入すると思っています。あなたは積極的なインプットとサポートを感謝します。

答えて

2

テストの単語の長さは:

For i = 0 To UBound(words, 1) 
    If Len(words(i)) > 2 Then 
     Select Case words(i) 
      Case = "and", "big", "small", "whatever else you want to add" 
      Case Else 
       For Each phrase In phrases 
        If InStr(1, phrase.Value, words(i)) Then 
         matches = matches & phrase & "/" 
        End If 
       Next phrase 
     End Select 
    End If 
Next i 
+0

@DomainsFeatured - 私はその回答の評判upvoteに値するかどうかは分かりません。 – YowE3K

+1

@DomainsFeatured P.S.いくつかのVBA機能を読み解くことでメリットを得るかもしれません:https://www.techonthenet.com/excel/formulas/index_vba.php – YowE3K

+1

ああ、ありがとう@ YowE3K – DomainsFeatured

2
Dim forbiddenWordsArr As Variant 
Dim forbiddenWords As String 

forbiddenWordsArr= Array("and","or","big","small","whatever else you want to add") 
forbiddenWords="|" & Join(forbiddenWordsArr,"|"), & "|" 
For i = 0 To UBound(words, 1) 
    Select Case True 
     Case = Len(words(i))<3 or InStr(forbiddenWords, "|" & words(i) & "|") > 0 

     Case Else 

    ... 
1

私はあなたがこれに有数の掲載元のリンクで振り返りました。

このRegexpが行う不要な単語(ブラックリストと3文字未満)をすべて削除して、フレーズで使用するために1Dの配列にホワイトリストの単語を残す方がよいと思います。

Dim StrIn As String 
Dim objRegex As Object 
Dim Words 

StrIn = Join(Application.Transpose(ThisWorkbook.Worksheets("Topics").Range("D1:D3000")), Chr(32)) 

Set objRegex = CreateObject("vbscript.regexp") 
With objRegex 
    .Pattern = "\b([a-z]{1,2}|and|or|big|small)\b" 
    .Global = True 
    .ignorecase = True 
StrIn = Application.Trim(.Replace(StrIn, vbNullString)) 
End With 

Words = Split(StrIn, Chr(32)) 
関連する問題