Excel名称列表中的重复工作表

时间:2014-07-18 14:58:46

标签: excel-vba vba excel

我有大型工作簿,有一些工作表,我需要复制/复制到一个新工作表,其名称如下所示:生成大规格数据集只需更改少量元素

     Colum A     Colum B
1    SheetName   CopyName
2    Sheet4      Spec_ABC
3    Sheet4      Spec_BCD
4    Sheet5      Spec_123
5    Sheet5      Spec_456
6    Sheet9      Spec_Any
7    ShettA      Spec_More

workbooks  Master / Sheet4 / Sheet5 / Sheet9 / SheetA etc...

我发现下面的代码会对Sheet(2)中的名称进行复制 我不确定如何更改(2)以反映SheetName。即colum A data。

因此实质上将SheetName复制到Copy to CopyName。 CopyNames没有重复的名称,因此不需要进行错误检查。

Sub AutoAddSheet()
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("Master").Range("B2")
Set MyRange = Range(MyRange, MyRange.End(xlDown))

For Each MyCell In MyRange
Sheets(2).Copy After:=Sheets(Sheets.Count) 'Create a new worksheet as a copy of Sheet number
Sheets(Sheets.Count).Name = MyCell.Value 'Renames the new worksheets
Next MyCell
End Sub

1 个答案:

答案 0 :(得分:0)

你很接近,我会以不同的方式做到这一点,但是以你的代码作为基础,这里应该可以解决这个问题:

Sub AutoAddSheet()
    Dim MyCell As Range, MyRange As Range
    Set MyRange = Sheets("Master").Range("A2")
    Set MyRange = Range(MyRange, MyRange.End(xlDown))

    For Each MyCell In MyRange
        Sheets(MyCell.Value).Copy After:=Sheets(Sheets.Count) 'Create a new worksheet as a copy of Sheet number
        Sheets(Sheets.Count).Name = MyCell.Offset(0, 1).Value 'Renames the new worksheets
    Next MyCell
End Sub

基本上,您希望将Sheets(2)替换为Sheets(<sheet name>) 而我所做的是循环列A(Set MyRange = Sheets("Master").Range("A2")) - 其中有工作表名称,然后使用MyCell.Offset(0, 1)设置名称,这说明从相应的B列中获取值

希望这是有道理的!