Excel FInd和replace正则expression式macros

我试图创build一个macros,给我一些问题,因为我没有经验,也不知道从哪里开始。

所有我想要做的是创build一个查找和replacemacros,将取代部分string没有。

例如,我有以下Custom Field(Id) ,我希望marco所做的就是将所有内容从Id移除。

我怎样才能做到这一点?

 Sub FindReplace() Dim sht As Worksheet Dim fndList As Variant Dim rplcList As Variant Dim x As Long fndList = Array("Custom field(", ")") rplcList = Array("", "") 'Loop through each item in Array lists For x = LBound(fndList) To UBound(fndList) 'Loop through each worksheet in ActiveWorkbook For Each sht In ActiveWorkbook.Worksheets sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ SearchFormat:=False, ReplaceFormat:=False Next sht Next x End Sub 

你可以使用Find & Replace而不用正则expression式来实现这个function!

在这里输入图像说明

解决方法1:

  1. select你的数据
  2. 打开查找和replace模块
  3. replace"Custom Field("""
  4. replace")"""

溶液2:

您可以使用本网站中提供的公式,也可以使用此站点上发布的VBA代码来删除string中的所有非数字字符。

 Sub RemoveNotNum() 'Updateby20131129 Dim Rng As Range Dim WorkRng As Range On Error Resume Next xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) For Each Rng In WorkRng xOut = "" For i = 1 To Len(Rng.Value) xTemp = Mid(Rng.Value, i, 1) If xTemp Like "[0-9]" Then xStr = xTemp Else xStr = "" End If xOut = xOut & xStr Next i Rng.Value = xOut Next End Sub 

正则expression式/变体数组解决scheme

还处理用户select范围中的多个区域的情况。

 Sub Retain() Dim X Dim rng1 As Range Dim rng2 As Range Dim objRegex As Object Dim lngRow As Long Dim lngCOl As Long On Error Resume Next Set rng1 = Application.InputBox("select range", , Selection.Address, , , , , 8) On Error GoTo 0 If rng1 Is Nothing Then Exit Sub Set objRegex = CreateObject("vbscript.regexp") With objRegex .Pattern = "[^0-9]" .Global = True For Each rng2 In rng1.Areas If rng2.Cells.Count > 1 Then X = rng2.Value2 For lngRow = 1 To UBound(X, 1) For lngCOl = 1 To UBound(X, 2) X(lngRow, lngCOl) = .Replace(X(lngRow, lngCOl), vbNullString) Next Next rng2.Value2 = X Else rng2.Value2 = .Replace(rng2, vbNullString) End If Next End With End Sub