在Excel中循环 – find并replace

我有以下代码

Sub CleanCat() Dim i As Integer For i = 1 To 50 Columns("A").Replace What:="Cat" & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="Cat " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="Category " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="Category" & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="cat" & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="cat " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="category " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Columns("A").Replace What:="category" & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next End Sub 

我想要的是循环遍历列A中的每个单元格,并执行显示的replace(我正在通过tweets循环),但是这并不能代替所有的东西。 我something cat 13 here得到东西,比如something cat 13 here

示例推文:

 @thisaccount I nominate @thataccountfor category 12 #somehashtag Cat 12 I nominate @thisaccount #somehashtag 

有任何想法吗?

没有数字循环的另一个选项。 (注:我build立在@ Jeeped的答案)

它还将这些单词放在数组中以便于更新。

 Sub CleanCat() Dim i As Long Dim srch() As Variant Dim srchPart As Variant srch = Array("Category ", "Category", "Cat ", "Cat") ' make sure this is in order longest to shortest. With Worksheets("Sheet1") .Columns("A") = .Evaluate("INDEX("'" & A:A,)") .Columns("A").Replace What:=Chr(160), Replacement:=Chr(32), LookAt:=xlPart For Each srchPart In srch .Columns("A").Replace What:=srchPart, Replacement:="}}}}", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next srchPart .Columns("A").Replace What:="}}}}", Replacement:="Category", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End With End Sub 

我也偷了@ Jeeped的公式来testing:

在这里输入图像描述

这是你应该要求的。

 Option Explicit Sub CleanCat() Dim i As Long With Worksheets("sheet1") .Columns("A").Replace What:=Chr(160), Replacement:=Chr(32), LookAt:=xlPart For i = 50 To 1 Step -1 .Columns("A").Replace What:="Cat" & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Columns("A").Replace What:="Cat " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False .Columns("A").Replace What:="Category " & i, Replacement:="Category" & i, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next i End With End Sub 

在这里输入图像说明

我的样本数据是用,

 =CHOOSE(RANDBETWEEN(1, 3), "cat", "Cat", "category")&CHOOSE(RANDBETWEEN(1, 3), TEXT(,), CHAR(32), CHAR(160))&RANDBETWEEN(1, 50)