如何将默认数据添加到新的Excel工作表?

时间:2012-08-04 16:20:24

标签: excel vba excel-vba excel-2010 worksheet-function

我在MS Excel文件的第一个工作表上有一个表。如果我创建一个新的工作表,我想用第一个工作表中的表中的某些行和列填充它。

具体来说,如果我在第一个工作表中有下表:

________________________________________________________
| Header 1 | Header 2 | Header 3 | Header 4 | Header 5 |
-------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------
|   Data   |   Data   |   Data   |   Data   |   Data   |
--------------------------------------------------------

然后我点击一个新的工作表,我应该自动出现以下内容:

__________________________________
| Header 1 | Header 4 | Header 5 |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------
|   Data   |   Data   |   Data   |
----------------------------------

有关如何实现这一目标的任何指示?我想避免创建宏,因为我不熟悉VB中的编程。但如果这是唯一的选择,我愿意去探索它。

2 个答案:

答案 0 :(得分:1)

您必须使用宏。在ThisWorkbook(请参阅快照)中,粘贴此代码

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim ws As Worksheet

    '~~> This is where you set the input sheet
    Set ws = Sheet1

    '~~> the range that you need to replicate
    ws.Range("A1:A5,D1:E5").Copy

    '~~> I am doing paste special values
    '~~> Change it to `xlPasteAll` if you need formats to be copied as well
    Sh.Range("A1").PasteSpecial xlPasteValues

    Application.CutCopyMode = False
End Sub

<强>快照

假设您在Sheet1中有此数据。

enter image description here

现在,每次添加工作表时,数据都将复制到新工作表中。

enter image description here

必须在此处粘贴代码

enter image description here

注意

此方法的最大缺点是您将丢失撤消列表。

答案 1 :(得分:0)

如果你想避免使用宏,你会发现索引,匹配和行功能组合的解决方案。

=Match(ColumHeader2,ColumHeaders1,0)

将为您提供Sheet1

中的列
=Index(Sheet1!A1,Row(Sheet2!CellRef),Match(ColumHeader2,ColumHeaders1,0))

为您提供要转换为工作表2的值

您想要转置数据的单元格的

CellRef = address

sheet2!A2中的公式如下:

=INDEX(Sheet1!$A$1:$F$11,ROW(Sheet2!A2),MATCH(A$1,Sheet1!$A$1:$F$1;0))

Sheet1!$A$1:$F$11 =数据范围包括sheet1中的标题

Sheet1!$A$1:$F$1 =标题范围在sheet1

只需将公式复制到sheet2中可能包含转置值的所有单元格。