Excel:查找和替换宏 - 仅一列

Mat*_*ell 5 excel vba excel-vba

我已经编写了一些宏来将一堆数据格式化为相同的可接受格式,我们从中获取的程序拒绝将数据拉到我们想要的范围,但理论上在Excel中更改并不难.

设置运行的方式是为修改器设置单独的宏,然后是"全部运行"宏,只调用它们.

目前我有:

Sub ReplaceTitleMs()
'
' Strips Mrs from Headteacher Name
'
'
'
 Columns("V").Select
 Cells.Replace What:="Ms ", Replacement:="", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,它会从整个工作表中删除Ms并且一列需要Ms仍然在单元格中(这是W列)

有效的数据示例如下:

Ms Helen Smith
Ms Brenda Roberts
Ms Kirsty Jones
Run Code Online (Sandbox Code Playgroud)

但是还有许多其他标题被使用,所以我想在宏必须选择的列上运行查找和替换.

宏工程找到我想要它的列...我只需要将它限制在该列!

小智 11

您需要正确限定Replace()方法的范围

Sub ReplaceTitleMs()
    Columns("V").Replace    What:="Ms ", _
                            Replacement:="", _
                            LookAt:=xlPart, _
                            SearchOrder:=xlByRows, _
                            MatchCase:=False, _
                            SearchFormat:=False, _
                            ReplaceFormat:=False
End Sub
Run Code Online (Sandbox Code Playgroud)


bre*_*tdj 7

根据您的数据(这是正常capitilised),以避免错误的比赛,你应该设置MatchCase为True,以避免扑杀的喜好 Mrs Nancy AdamsMrs Nancy Ada

Columns("V").Replace "Ms ", vbNullString, xlPart, xlByRows, True
Run Code Online (Sandbox Code Playgroud)

要完全防弹,你要么

  1. 使用AutoFilter的检测和清除
  2. 使用Find和构建一系列匹配项FindNext,然后仅删除匹配正确的前三个字符