【问题标题】:Find "abc", replace with "abc"+####找到“and”,替换为“abc”+####
【发布时间】:2018-06-15 08:29:01
【问题描述】:

我有一个包含内容的数据集,例如“abc1234”、“abc2345”、“abc3456”等

“abc”部分是常量,也是我找到它们的方法。

但是当我找到它们时,我想替换/删除常量部分和可变部分的 3 个字符。

例如查找 "abc"-> result = "abc1234" -> 将 "abc123" 替换为 ""。

我尝试过使用类似下面的方法。使用 # 作为每个变量位置/字符的通配符。但是不行……

Selection.Replace what:="abc", Replacement:=""+###, _
LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat _
:=False, ReplaceFormat:=False

我做错了什么?

【问题讨论】:

    标签: vba replace find wildcard


    【解决方案1】:

    好吧,您必须将通配符放在搜索模式中,而不是替换中。另外,对于单个字符,通配符是?

    Selection.Replace what:="abc???", Replacement:="", _
       LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat _
       :=False, ReplaceFormat:=False
    
    'input   -> output
    'abc1234 -> 4
    'abc2345 -> 5
    'abc3456 -> 6
    

    【讨论】:

      【解决方案2】:

      你试过函数replace()吗?

      Replace("abc1234", "abcd123", "") 给出 4

      【讨论】:

      • OP 正在使用替换功能。他试图做的是删除abc???,其中? 是任何字符。您的答案仅适用于特定模式。
      【解决方案3】:

      没有搜索和替换的另一种可能性:

      Dim ra As Range
      For Each ra In Selection
          If Left(ra.Value, 3) = "abc" Then
      ra.Value = Mid(ra.Value, 7, 50)
          End If
      Next
      

      在我的 Excel 上工作

      【讨论】:

      • 好吧,如果我理解正确的话,可能还有其他数据不应该被替换。 “abc”部分是常量,也是我找到它们的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多