2013-02-15 136 views
0

我有一個Excel電子表格,我需要修改一個特定的列。Excel VBA代碼替換具體的列

第1步:找到列名

步驟2.馬克在此列的所有填充行

第3步:用某種行動繼續(主要是查找和替換,或者如果另一列是「本」然後修改我的專欄「那」)。

我想指定的第2步,讓我的空間可以方便地修改代碼步驟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 

我相信我所懷念的是代碼,將「說」爲已任,標列的行...。在這裏你只粘貼在互聯網上找到的代碼部分。

+0

你需要處理的所需的列所有匹配的細胞,或只有特定的?例如:你有5個帶有'this'單元格的列,但是你想根據其他標準只替換3個單元格而不是5個單元格? – 2013-02-15 10:40:38

+0

在大多數情況下,該操作將應用於列中的所有單元格。唯一的區別是我需要一個宏,它將查找填充在名爲Comments的列中的值,並根據註釋修改所選單元格。但正如我所說,在大多數情況下,相同的規則將適用於所選列中的所有單元格 – mgunia 2013-02-15 11:33:19

回答

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

+0

添加了示例文件。 – 2013-02-15 12:01:37

+0

謝謝彼得。似乎是有希望的發現和替換作品。但是,我需要對此代碼實施countif需要哪些修改? – mgunia 2013-02-15 14:31:22

+0

假設上面的代碼:'k = Application.WorksheetFunction.CountIf(TargetColumn,ReplaceTo)'但是,這是另一個**問題。示例文件可以使用相同的鏈接。 – 2013-02-15 14:39:37