我已经编写了一些宏来将数据加载到相同的格式,我们从中获取的程序拒绝将数据拉到我们想要的范围,但从理论上讲,在Excel中进行更改并不困难。 / p>
设置运行的方式是为修改器设置单独的宏,然后设置一个“全部运行”宏,只调用它们。
目前我有:
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
但是当我运行它时,它会从整个工作表中删除Ms并且一列需要Ms仍然在单元格中(这是W列)
数据的一个例子是:
Ms Helen Smith
Ms Brenda Roberts
Ms Kirsty Jones
但是还有许多其他标题被使用,所以我想在宏必须选择的列上运行查找和替换。
宏工作在我想要的列上查找...我只需要将其限制为该列!
答案 0 :(得分:11)
您需要正确限定Replace()
方法的范围
Sub ReplaceTitleMs()
Columns("V").Replace What:="Ms ", _
Replacement:="", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False
End Sub
答案 1 :(得分:6)
根据您的数据(已正确上限),为避免错误匹配,您应将MatchCase
设置为True以避免剔除
Mrs Nancy Adams
至Mrs Nancy Ada
Columns("V").Replace "Ms ", vbNullString, xlPart, xlByRows, True
要完全防弹,你要么
AutoFilter
进行检测和删除Find
和FindNext
构建一系列匹配项,然后仅删除匹配正确的前三个字符答案 2 :(得分:0)
按下“ ALT + F11
”键快捷方式(即按住ALT
键并同时按下最后一个版本的F11
键)以打开 Microsoft Visual Basic应用程序窗口。
单击“ Insert > Module
”(即从“ Insert
”菜单中单击“ Module
”),然后将以下代码粘贴到“模块窗口”中。
Sub ReplaceInSelection()
Dim rng As Range
Dim workRng As Range
Dim find$
Dim replace$
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set workRng = Application.Selection
Set workRng = Application.InputBox("Range", "Select Range", workRng.Address, Type:=8)
find = Application.InputBox("Find:", "Select what to find")
replace = Application.InputBox("Replace with:", "Select replacement")
For Each rng In workRng
If rng.Value = find Then
rng.Value = replace
End If
Next
End Sub
ALT + F8
”键(或在旧版excel中仅按F5
),以运行代码,并在选择“ ReplaceInSelection
”时单击运行。OK
find
replace
发生的任何事情全部完成!在选定的单元格中搜索了您为find
指定的内容,并再次更改为您为replace with
指定的内容。