我知道在过滤时可以使用通配符在单词上方查找其他字符。例如,如果我过滤“ Sales”一词,则可以将过滤器替换为“ Sales *”,以查找前五个字符以外的其他字符。有没有一种方法可以使用字符在“销售”上准确地停止和过滤,即不包含结果“销售操作”?
我尝试了一下,但我认为它是可行的,但后来发现它没有用。
With Thisworkbook.Sheets("Sheet1")
If .Range("A2").Value = "Sales" Then
.Range("A2").Replace "Sales", "Sales?"
End If
End With
答案 0 :(得分:1)
您不需要使用通配符功能。如果您记录宏,请使用“替换”功能,然后选择“选项”并勾选Match entire cell contents
,您将看到类似的代码。
Sub Macro2()
Cells.Find(What:="Sales", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Replace What:="Sales", Replacement:="Foo", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.FindNext(After:=ActiveCell).Activate
End Sub
LookAt:=xlWhole
实现了整个比赛。
答案 1 :(得分:1)
您在任何地方都没有明确说过,但是我假设您使用了代码:
With Thisworkbook.Sheets("Sheet1")
If .Range("A2").Value = "Sales" Then
.Range("A2").Replace "Sales", "Sales?"
End If
End With
,结果是它替换了Sales Operations
与Sales? Operations
并不想发生。
在仅使用显而易见的前两个参数时,Replace
方法具有8个参数:
What
和Replacement
悲痛的原因在于,由于您执行了最后的Find
或Replace
操作,第三个参数LookAt
设置为xlPart
,这意味着它将在包含您的What
参数“销售”的单元格中查找或替换任何匹配项。可以通过将行更改为以下内容来轻松解决此问题:
.Range("A2").Replace "Sales", "Sales?", xlWhole
现在,像LookAt
一样,还有两个更重要的参数,每次执行“替换”或“查找”都会保存:
SearchDirection
和MatchCase
最好在每次执行Replace
或Find
时设置。
您应该仔细研究这两种方法,因为它们并不像人们想象的那样简单(容易)。