【问题标题】:Excel: Find and Replace Macro - One Column OnlyExcel:查找和替换宏 - 仅一列
【发布时间】:2019-04-01 17:37:51
【问题描述】:

我已经编写了一些宏来将加载的数据格式化为相同的可接受格式,我们从中提取的程序拒绝按照我们想要的方式提取数据,但理论上在 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

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

数据的一个例子是:

Ms Helen Smith
Ms Brenda Roberts
Ms Kirsty Jones

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

宏在我想要的列上工作...我只需要将其限制在该列!

【问题讨论】:

  • 问题是使用Cells 而不用范围限定它意味着工作表上的所有单元格。 V 列上的Select 无关紧要。
  • 我认为这可能是有问题的部分,只是不太确定该怎么做!谢谢大家

标签: vba excel


【解决方案1】:

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

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

【讨论】:

  • 这太完美了,我知道我在不远的地方,但重新录制并没有产生那样的效果。非常感谢!
【解决方案2】:

根据您的数据(已正确大写),为避免错误匹配,您应将 MatchCase 设置为 True 以避免剔除类似 Mrs Nancy AdamsMrs Nancy Ada

Columns("V").Replace "Ms ", vbNullString, xlPart, xlByRows, True

为了完全防弹,你要么

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

【讨论】:

    【解决方案3】:

    在选定单元格中搜索和替换

    1. 按“ALT + F11”快捷键(即按住 ALT 键并在最后一次释放时同时按 F11 键)打开 Microsoft Visual Basic for Applications 窗口.

    2. 点击“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
    
    1. 现在关闭 Microsoft Visual Basic for Applications 窗口
    2. 并选择要转换为可点击超链接的 url 文本范围。
    3. 然后按“ALT + F8”键(或在旧版 excel 中只是 F5),在选择“ReplaceInSelection”时运行代码点击运行
    4. 然后会打开一个弹出对话框供您更改之前选择的范围,然后单击OK
    5. 然后将打开另一个弹出对话框以指定您想要的find
    6. 然后,最后,将打开一个弹出对话框,供您指定您想要replace 找到的任何内容

    全部完成!所选单元格已搜索您指定为 find 的内容,并再次更改为您指定为 replace with 的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-11
      • 2020-12-26
      • 2017-01-22
      • 2013-07-15
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 2021-11-30
      相关资源
      最近更新 更多