要在特定列中替换的Excel VBA代码

时间:2013-02-15 10:30:14

标签: excel vba excel-vba

我有一个Excel电子表格,我需要修改一个特定的列。

步骤1.找到列名

步骤2.标记此列中所有已填充的行

步骤3.继续执行某些操作(主要是查找和替换,或者如果其他列是“this”,则修改我的列“that”。

我希望指定前两个步骤,并为我提供修改代码的空间,以便继续执行第3步。

我有VBA代码,它可以完成类似的工作。它搜索特定的列名称,它标记所有填充的行。它不允许我轻松地将互联网上的其他代码复制并粘贴到主代码中。

MACRO获取列名称并标记此列中的所有记录

Sub FindAddressColumn()
Dim rngAddress As Range
Set rngAddress = Range("A1:ZZ1").Find("Address")
If rngAddress Is Nothing Then
    MsgBox "Address column was not found."
    Exit Sub
End If
Range(rngAddress, rngAddress.End(xlDown)).Select
End Sub

互联网上发现的大多数宏都指定了列。

我想添加到主要代码的代码示例:

Sub GOOD_WORKS_Find_Replace_Commas_in_Emails()
Sheets("Data").Activate
Dim i As String
Dim k As String
i = ","
k = "."
Columns("R").Replace What:=i, Replacement:=k, LookAt:=xlPart, MatchCase:=False
Sheets("Automation").Activate
MsgBox "Removing commas in emails - Done!"
End Sub

我相信我想念的是代码,它会为已标记的列行“说”....在这里,您只粘贴在互联网上找到的部分代码。

1 个答案:

答案 0 :(得分:2)

我认为这段代码可以完成你想要的工作:

Sub ColumnReplace()

Dim TargetColumn As Range
Dim Header As String
Dim SearchFor As String
Dim ReplaceTo As String

Header = "ccc"
SearchFor = "111"
ReplaceTo = "99999"

Set TargetColumn = ThisWorkbook.ActiveSheet.Range("1:1").Find(Header, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
Set TargetColumn = Cells(1, TargetColumn.Column).EntireColumn
TargetColumn.Replace What:=SearchFor, Replacement:=ReplaceTo, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

根据需要采用工作簿/表格名称以及搜索/替换字符串。

示例文件:https://www.dropbox.com/s/s7fghhlsmydjaf6/EntireColumnReplace.xlsm