【问题标题】:Copy range from master sheet from all sheet从所有工作表复制主工作表的范围
【发布时间】:2019-01-11 15:47:23
【问题描述】:

我的工作簿中有 20 张工作表,我想将修复范围 L3 到 L7 复制到我的 MasterSheet。我复制的源范围对于所有工作表都是相同的,即 L3 到 L7,但目标是 b2 到 f2、b3 到 f3、b4 到 f4 等等。

这是我编写的代码,但我必须给出动态目标范围。 那么我应该怎么做,除此之外。

Sub test1()
    Dim x As Integer
    For x = 1 To Worksheets.count
        Cells(x, 1).Value = Worksheets(x).Name
        Worksheets("MasterSheet").Range("b2").Value = Worksheets(x).Name.Range("l3").Value
        Worksheets("MasterSheet").Range("c2").Value = Worksheets(x).Name.Range("l4").Value
        Worksheets("MasterSheet").Range("d2").Value = Worksheets(x).Name.Range("l5").Value
        Worksheets("MasterSheet").Range("e2").Value = Worksheets(x).Name.Range("l6").Value
        Worksheets("MasterSheet").Range("f2").Value = Worksheets(x).Name.Range("l7").Value
    Next x
End Sub

【问题讨论】:

  • 请更清楚地定义您的询问。看起来您有可以工作的代码,并且您有 20 张工作表,其中一些是您复制的,这就是您使用的代码。 “除此之外我应该怎么做”过于宽泛,或者会导致主观反应,这本质上超出了本网站的范围。

标签: excel vba


【解决方案1】:

一种选择是使用Offset 为每个连续的工作表向下移动一行。

类似这样的:

Sub test1()
    Dim counter As Integer
    Dim ws As Worksheet, masterWS As Worksheet

    Set masterWS = Worksheets("MasterSheet")

    For Each ws In Worksheets
        If ws.Name <> "MasterSheet" Then
            counter = counter + 1
            masterWS.Range("A1").Offset(counter).Value = ws.Name
            masterWS.Range("B1:F1").Offset(counter).Value = Application.Transpose(ws.Range("L3:L7").Value)
        End If
    Next ws
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多