我有大型工作簿,有一些工作表,我需要复制/复制到一个新工作表,其名称如下所示:生成大规格数据集只需更改少量元素
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
答案 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列中获取值
希望这是有道理的!