我有许多跟踪项目的工作表。所有这些工作表都遵循相同的格式和布局。这些工作表每周都会创建更多。因此,目前有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
我真的不知道该如何进步。不确定如何获取要沿着行粘贴的数据以及如何将其作为公式的一部分插入。同样不确定如何保持自动化,以便在完成新工作表后可以重新运行该工作表并更新主表。
任何帮助将不胜感激。
答案 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
来启动/关闭/保存/保存工作簿等操作。究竟要使用哪一个取决于您的情况,并且您没有提供足够的信息来让任何人提供体面的建议。