查找以"电子邮件"VBA开头的列

mgu*_*nia 1 excel vba excel-vba

我对VBA的了解非常有限.但是,在谷歌的帮助下,我做了一个搜索名为Email的列的脚本.然后,如果它找到它,它会查看此列中是否有逗号.如果是,则将逗号更改为点.但是,此解决方案区分大小写.如果列名略有不同,则它不起作用.到目前为止,我知道这个脚本将清理的文件中有2个不同的选项1.电子邮件2.电子邮件 - 个人电子邮件

我希望能够使此脚本适用于所有电子邮件起始列.我试图将其指定为"电子邮件*",但它不起作用.有人能帮我吗?

Sub mySample()
Sheets("Data").Activate
Dim cell As Excel.Range
Dim ws As Excel.Worksheet
Dim i As Integer
Dim j As Integer

For Each ws In Excel.ThisWorkbook.Sheets
i = ws.Cells(1, Excel.Columns.Count).End(Excel.xlToLeft).Column

For j = 1 To i
    If ws.Cells(1, j).Value = "Email" Then
        Cells.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
    End If
Next j
Next ws
Sheets("Automation").Activate
MsgBox "Removing commas in emails - Done!"

End Sub
Run Code Online (Sandbox Code Playgroud)

Pet*_* L. 5

我建议你使用不同的方法:而不是循环第一列的槽单元 - 只需使用Excel搜索来识别电子邮件列:

LookupString = "Email"
Set SearchRange = ActiveWorkbook.ActiveSheet.Range("1:1").Find(LookupString, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
Run Code Online (Sandbox Code Playgroud)

LookupString无论列名中的位置和大小写如何,通过给出的选项,您将找到正确的任何值匹配.ActiveWorkbook.ActiveSheet.根据需要用WB /表的名称替换零件.

此外,您可以使用返回的SearchRange属性(例如Column,用于进一步处理列中的数据).祝好运!