Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 比较列表并替换工作表名称_Vba_Excel - Fatal编程技术网

Vba 比较列表并替换工作表名称

Vba 比较列表并替换工作表名称,vba,excel,Vba,Excel,我有一个工作表(“转储”),有两列“全名”(AA、BB、CC等)和“电子邮件地址”(123@test.com,321@test.com等) 整个Excel包含200多个工作表(命名为AA、BB、CC等) 我需要一个VBA脚本将工作表名称与“转储”工作表中的“全名”列进行比较,并且仅当工作表名称与“全名”匹配时,才将工作表名称替换为“电子邮件地址”,即仅当AA(全名)=AA(工作表名称)时才替换 我有代码可以在未经验证的情况下将“全名”替换为“电子邮件地址” Sub replace() D

我有一个工作表(“转储”),有两列“全名”(AA、BB、CC等)和“电子邮件地址”(123@test.com,321@test.com等)

整个Excel包含200多个工作表(命名为AA、BB、CC等)

我需要一个VBA脚本将工作表名称与“转储”工作表中的“全名”列进行比较,并且仅当工作表名称与“全名”匹配时,才将工作表名称替换为“电子邮件地址”,即仅当AA(全名)=AA(工作表名称)时才替换

我有代码可以在未经验证的情况下将“全名”替换为“电子邮件地址”

Sub replace()
    Dim arr As Variant
    arr = Range("A2:A5").Value
    For i = LBound(arr) To UBound(arr)
        Sheets(i + 1).Activate
        Sheets(i).Name = arr(i, 1)
    Next i
End Sub

谢谢:)

您可以这样做(未经测试):


这假设您的全名在A列,从第2行开始,电子邮件地址在B列。

如果这很复杂,请以其他方式帮助我。如果验证为真,即如果AA(全名)=AA(工作表名),我只需要将特定工作表作为电子邮件发送。这非常有效。只需删除底部第4行的“;”)谢谢trincot:)太好了!事实上,这个分号不属于那里。我现在把它拆了。如果您同意,请接受答案(参见左上角的标志)。
Sub replace()
    Dim col As New Collection
    Dim cell As Range
    Dim sh As WorkSheet

    ' Step 1: Create a dictionary that maps names to emails
    For Each cell in Sheets("Dump").Range("A2:A999")
        If cell.value = "" Then Exit For ' no more names
        col.Add cell.Offset(0, 1).value, cell.value
    Next
    ' Step 2: Go through all sheets and rename them
    For Each sh in Sheets
        sh.Activate ' not really necessary, but it gives some visual clue
        On Error Resume Next ' ignore mismatch errors
            sh.Name = col.Item(sh.Name) ' replace name by email
        On Error Goto 0
    Next
End Sub