将某些单元格从不断变化的工作表复制到新行

时间:2018-08-06 22:10:06

标签: excel vba worksheet

我有许多跟踪项目的工作表。所有这些工作表都遵循相同的格式和布局。这些工作表每周都会创建更多。因此,目前有5个,但将来还会有更多。

我正在寻找创建一个主工作表,该工作表使用某些单元格来总结工作表中的关键点。

例如,对于每个表(sheet1,sheet2,sheet3等...),我需要在工作表中相同单元格上的相同数据。 数据来自单元格H13:H18,H20:H28和H30:48。我需要将这些数据拉到主表中,然后将其除以单元格的数量,以得出一个百分比。在“ Sheet1”中的同一行上完成此操作后,它将移至下一个工作表(“ Sheet2”),并将数据复制到主工作表的下一行。

到目前为止,这是我想出的,所有初学者:

Dim lastRow As Long
Dim wb As Workbook
Set themaster = Sheets("Master")
Set wb = Application.Workbooks("workb1")

For i = 1 To wb.Sheets.Count
    wb.Sheets(i).Activate
    Sheet.Range("C4", "H13:H18", "H20:H28", "H30:H48").Select
    Selection.Copy

lastRow = themaster.Range("A" & themaster.Rows.Count).End(xlUp).Row

With Selection
    .Copy Destination:= themaster.Range("A" & lastRow + 1)
    .EntireRow.Delete
End With
Next

我真的不知道该如何进步。不确定如何获取要沿着行粘贴的数据以及如何将其作为公式的一部分插入。同样不确定如何保持自动化,以便在完成新工作表后可以重新运行该工作表并更新主表。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这将帮助您入门。它将遍历每张工作表,将所需的数据转置到Master上的新行中,并根据需要的范围跨Column Z当前将最后的所有数据平均(Columns A to AA一旦转置)。运行后,您可以在Master表上看到生成的公式。


Option Explicit

Sub akdjhfgaerfjslrhlvs()

Dim Master As Worksheet: Set Master = ThisWorkbook.Sheets("Master")
Dim ws As Worksheet, LRow As Long

Application.ScreenUpdating = False
    For Each ws In Worksheets
        If ws.Name <> Master.Name Then
            With Master
                LRow = .Range("A" & .Rows.Count).End(xlUp).Offset(1).Row   'Find Last Row
                .Range("A" & LRow) = ws.Range("C4") 'Grab cell C4
                Union(ws.Range("H13:H18"), ws.Range("H30:H48")).Copy 'Copy the others at once
                .Range("B" & LRow).PasteSpecial xlPasteValues, Transpose:=True 'Paste/transpose at once

                .Range("AA" & LRow).Formula = "=Average(A" & LRow & ":" & "Z" & LRow & ")" 'average all the data at once

            End With
        End If
    Next ws
Application.ScreenUpdating = True

MsgBox "Please show an attempt on your next post. You should also take the tour page if you intend to keep Stack Overflow as a future resource", vbCritical

End Sub

您可以使用Events来启动/关闭/保存/保存工作簿等操作。究竟要使用哪一个取决于您的情况,并且您没有提供足够的信息来让任何人提供体面的建议。