【问题标题】:Copying certain cells from changing amount of worksheets to new rows将某些单元格从更改数量的工作表复制到新行
【发布时间】:2018-08-06 22:10:06
【问题描述】:

我有许多跟踪项目的工作表。所有这些工作表都遵循相同的格式和布局。每周都会创建更多这些工作表。所以目前有 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

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

任何帮助将不胜感激。

【问题讨论】:

  • 根据您所做的工作,您可以在没有 VBA 的情况下完成此操作。例如,使用AVERAGE 公式可以跨工作表(包括未知数量的工作表)。看this site和this site
  • 我会使用For Each Worksheet in Worksheets 循环。不要马上担心你的平均水平。一次一个问题(首先学习如何遍历工作表并复制/粘贴)

标签: excel vba worksheet


【解决方案1】:

这将帮助您入门。它循环遍历每张工作表,将您想要的数据转置到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 来关闭此功能,例如在打开/关闭/保存/等工作簿时。使用哪一个真的取决于你的情况,你没有提供足够的信息让任何人提供一个体面的建议。

【讨论】:

  • 您应该能够接受并完成您的项目。如果您需要小更新方面的帮助,请诚实地尝试自己解决(并将 Stackoverflow 作为资源):)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多