VBA:使用列中的文本替换同一列中的相同文本

时间:2015-03-30 13:43:55

标签: vba excel-vba replace str-replace excel

我正在尝试将T13列中的所有文本替换为T-lastrow。

因为我已经并且将在T列中收到更多文本(动态工作表将从另一个工作表中获取导入的数据)。 基本上,我希望将T中的文本放入: {Nyckelord="TEXT HERE";}

然而,我的宏进入无限循环(我认为)。 是否也可以自动删除T列中单词之间可能出现的任何逗号? 例如:
列T13 +中的文字:
冰淇淋,华夫饼干 它应该是{Nyckelord="Icecream waffle";}

Sub SearchTerms()

Dim Findtext As String
Dim Replacetext As String
Dim LastRowInput As Long
Dim field1 As String

LastRowInput = Cells(Rows.count, "T").End(xlUp).Row

For i = 2 To LastRowInput

field1 = Range("T13" & i).Value

Findtext = Sheets("Sheet1").Range("T13").Value
field1 = Sheets("Sheet1").Range("T" & LastRowInput + 1).Value

Replacetext = "{Nyckelord=""" & field1 & """;}"

Sheets("Sheet1").Select

Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Next i

End Sub

1 个答案:

答案 0 :(得分:0)

field1 = Range("T13" & i).Value

此行将开始在单元格T132处读取。你是说这个吗?

field1 = Range("T" & 13 + i).value

在这种情况下,循环应该是:

For i = 0 to LastRowInput - 13

另外,如果您只想将每个单元格的内容包装在" T"使用{Nyckelord="TEXT HERE";}语法,为什么不这样做呢?

    LastRowInput= Range("T" & ActiveSheet.UsedRange.Rows.Count + 1).End(xlUp).Row 

    For i = 0 to LastRowInput - 13

       Range("T" & 13 + i).Value = "{Nyckelord=" & Range("T" & 13 + i).Value & ";}"

    Next i