使用VBA将Excel 2013中的工作表复制到工作簿的末尾

时间:2015-07-16 18:06:57

标签: excel vba excel-vba

我在Excel 2013工作,遇到了一些麻烦。我整天在网上研究过,似乎无法找到解决我问题的任何东西。

我有一个由6张纸组成的Excel文档: 格式 摘要 1.1细节 1.2细节 1.3细节 1.4细节

“详细信息”表的格式完全相同。 “摘要”表汇总了“详细信息”表中的所有值,并包含各种图表和有用信息。 “格式”表是我创建的,旨在使这个文档更加动态,对所有不同类型的项目都有用。该文件用于估算项目,因此不同的项目将有不同数量的“详细信息”表。

所以,我的目标是在'格式'表格中留一个空白,询问需要多少细节。当用户键入5时,代码将在工作簿的末尾添加名为“1.5 Detail”的工作表,并使其格式与其他“详细信息”工作表相同。这可能使用VBA吗?此外,是否有一种方法可以使图表和公式包含新标签,而无需手动添加并添加到所有内容中?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我们假设您有三个详细的工作表:d_1,d_2和d_3。

每个表都有一个名为Labor的Excel表,其中一列名为" Cost"。每个Labor表都有唯一数量的数据行。

在摘要表上,你可以总结所有这些:

=SUM(d_1:d_3!Labor[Cost])

以上将为您提供所有工作表的人工成本总额。它汇总了表中的所有行,并且不依赖于详细信息表中的任何摘要信息。

因此,如果添加新的详细信息表d_4,则需要更新示例公式。但是,有一个老技巧来解决这个问题......

使用相同的表创建另外两个工作表,但每个表中只有一行ZERO值。拨打这些表格中的第一个" START"。拨打这些表格中的第二张"结束"。将START放在第一个详细信息表之前,并在最后一个详细信息表之后立即放置END。现在两个都是不可见的。

最后将示例公式更改为:

=SUM(START:END!Labor[Cost])

现在,当添加新的详细信息表d_4,d_5,d_6,d_n时,汇总表上的公式不需要进行任何更改,但所有新数据都包含在汇总计算中。

答案 1 :(得分:0)

使用ThisWorkbook.Worksheets.Count计算张数。然后if更少,使用Worksheets.AddActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count)将其添加到最后。