如何在VBA代码中黑名单

我有以下脚本, 将单元格中的任何单词与单元格区域中的任何其他单词相匹配 。 但是,我希望代码省略某些常见术语,如“和,或大,小”。

我对VBA不太好,所以我希望有人能够告诉我在哪里添加到代码中:

Sub FindSimilar() Dim phrases As Range, phrase As Range Dim terms As Range, term As Range Dim matches As String Dim words() As String 'ensure this has the correct sheet names for your workbook Set phrases = ThisWorkbook.Worksheets("Export").Range("B2:B2000") Set terms = ThisWorkbook.Worksheets("Topics").Range("D100:D3000") For Each term In terms matches = "" words() = Split(term.Value) For i = 0 To UBound(words, 1) For Each phrase In phrases If InStr(1, phrase.Value, words(i)) Then matches = matches & phrase & "/" End If Next phrase Next i If matches <> vbNullString Then term.Offset(0, 6).Value = Left(matches, Len(matches) - 1) Else term.Offset(0, 6).Value = "No match" End If Next term End Sub 

如何将代码中的术语列入黑名单? 您的积极的投入和支持是高度赞赏。

如果我明白你想要什么,你可以在For Each Loop放置一个Select Case语句

 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 

但是,如果有大量的条款,这将是不切实际的。

如果有大量的条款,您可以将BlackListed条款存储在工作表上,然后执行如下操作:

 For i = 0 To UBound(words, 1) If ThisWorkbook.Worksheets("Topics").Range("BlackList").Find(words(i),lookat:=xlWhole) is Nothing Then For Each phrase In phrases If InStr(1, phrase.Value, words(i)) Then matches = matches & phrase & "/" End If Next phrase End If Next i 

假设BlackList是一个namedrange。 如果不是简单地用A1:A100或任何范围代替。