查找和替换Excel中需要的公式

时间:2014-03-21 13:23:16

标签: excel vba excel-vba excel-formula

我在Excel工作表中替换数据时遇到了很大的问题。主表中有超过6000个关键字,超过300000行。我必须在原始文本行的下一行中替换这些关键字。我正在尝试这个公式:

Sub ReplaceExample()

Dim OriginalText As String
Dim CorrectedText As String

OriginalText = Range("A2").Value
CorrectedText = Replace(OriginalText, "left", "Left")
CorrectedText = Replace(OriginalText, "limited", "Limited")


Range("A2").Offset(, 1).Value = CorrectedText 
End Sub

但我遇到Range()的问题。 我在Excel表格中有一个巨大的数据范围。

我可以为所有替换使用单个公式???

例如:这是原始文本单元格编号(A2:A12)

的示例数据
00-00 Buick Lesabre (limited) headlight Set;
00-00 Buick Lesabre Tail Light left;
00-00 Buick Lesabre Tail Light Pair;
00-00 Buick lesabre tail Light Right;
00-00 Buick Lesabre Tail Light Set;
00-00 Dodge /Plymouth Neon Fog Light Pair;
00-00 Dodge caravan/Plymouth voyager/ Chrysler towncar(W/ Quad) Headlight Left;
00-00 Dodge Caravan/voyager /Towncar(W/O Quad&Dtrl)Headlight Set;
00-00 Dodge/Plymouth Neon Fog Light Left;
00-00 Dodge/Plymouth Neon Fog Light Right;
2000 Nissian 350z;

关键字单元格编号(A2:A8)

Limited;
Left;
Lesabre;
Caravan;
Voyager;
350Z;
Towncar

我需要快速解决。

1 个答案:

答案 0 :(得分:1)

这样做:

在开头插入2列,在A列中放置所有关键字。在b列中放置所有替换。从第一行的顶部开始。然后使用这个宏:

Sub macro1()


    Dim rng As Range
    Set rng = thisWorkbook.Activesheet.Range("A1")'uses thisWorkbook and Activesheet such that this macro will work regardless of the name of the sheet or workbook.
    While rng.FormulaR1C1 <> "" 'processes untill a blank cell is encountered
        Cells.Replace What:=rng.FormulaR1C1, Replacement:=rng.Offset(0, 1), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Set rng = rng.Offset(1, 0)
    Wend

End Sub

您希望将此宏粘贴到与当前宏下方已存在的模块相同的模块中。或者,您只需删除宏中Sub ReplaceExample()end sub之间的所有内容,然后将我的示例中的所有内容复制到Sub macro1()end sub之间,并将其粘贴到代码所在的位置。