2

我得到了一个包含 30 张纸的 excel 文件,它们都包含相同的第一行。我正在寻找一种代码/方式来复制工作表 1 上的第一行并将其粘贴到所有现有工作表上。

行定期更改,通过这种方式我只需调整一次。

4

4 回答 4

4

您可以使用它.FillAcrossSheets来执行此操作:

Sub CopyToAllSheets()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Sheets.FillAcrossSheets ws.Range("1:1")
End Sub

请注意,您可以使用可选的类型参数指定要复制的内容:

  • 复制内容和格式=xlFillWithAll
  • 仅复制内容 =xlFillWithContents
  • 仅复制格式 =xlFillWithFormats

默认值为xlFillWithAll. 如果您想使用其他选项之一,请执行以下操作:

' copy contents
Sheets.FillAcrossSheets ws.Range("1:1") xlFillWithContents

或者

' copy formats
Sheets.FillAcrossSheets ws.Range("1:1") xlFillWithFormats

如果您不想复制到工作簿中的每个工作表,您可以指定一个目标工作表列表,如下所示:

Sub CopyToSpecificSheets()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim targetSheets As Variant

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")
    ' the sheet we are copying from must be included in the array
    targetSheets = Array(ws.Name, "Sheet2", "Sheet4")
    wb.Sheets(targetSheets).FillAcrossSheets ws.Range("1:1")
End Sub
于 2013-09-02T13:47:25.447 回答
0

您可以尝试以下操作:单击并按住键盘上的“Shift”,然后用鼠标单击最后一张纸。您会注意到所有工作表都将被分组(注意 excel 文件顶部的关键字“组”)。现在,您在 1 张纸上所做的一切都将在组模式下应用到所有。

于 2013-09-02T13:44:56.417 回答
0

假设您设置了标准的 3 张纸(Sheet1、Sheet2、Sheet3),可以做一个简单的方法

在工作表 1 中进行所有更改,然后单击工作表 2,Shift + 单击工作表 3。

在单元格 A1 中,键入 =sheet1!a1

将它复制到您需要的距离。

选择工作表 1(以删除分组)

现在工作表 2 和 3 将具有相同的顶行。这适用于 excel 支持的尽可能多的工作表。所以点击 sheet2,然后 shift 点击 sheet 50 将填写 Sheet2 - sheet 50 范围内的所有工作表

于 2013-09-02T13:43:30.197 回答
0

考虑类似的事情:

Sub qwerty()
    Dim r As Range
    Set r = Sheets(1).Range("1:1")
    For n = 2 To Sheets.Count
        r.Copy Sheets(n).Range("A1")
    Next n
End Sub
于 2013-09-02T13:43:43.973 回答