【问题标题】:Sum row cell values from multiple workbooks with multiple worksheets and paste it columnwise将多个工作簿中的行单元格值与多个工作表相加并按列粘贴
【发布时间】:2014-05-14 02:09:22
【问题描述】:

这是问题的第 2 部分: Sum cell values from multiple workbooks with multiple worksheets - Macro

总结一下我的要求: 我有50本练习册。每个都有 3 个工作表(总共 6 个。其他 3 个无关紧要)。只有第一行有值(比如 sheet1、2 和 3 中从单元格 A1 到 N1 的 10 个值)。我想将每个工作表的第一行值与每个工作簿分开求和,并将其粘贴到工作表 1 的宏工作簿中的单个列中。 (所以我会得到一个包含 30 个值的最后一列)。

我尝试继续上一个问题的代码。但我无法这样做。唯一的修改是将其按列粘贴到单个工作表中(D 列)。任何帮助将不胜感激。

【问题讨论】:

  • 你的代码是什么?它在做什么不符合您的预期?
  • 不清楚你想要什么输出,你能举个例子吗?
  • 输出 - 单列中将有 30 个值。前 10 个将是 50 个工作簿中 sheet1 的(单个)值 row1 的总和。接下来的 10 将是 50 个工作簿中 sheet2 的 row1 的总和。接下来的 10 个将有 50 个工作簿的 sheet3 的第 1 行。

标签: vba excel sum


【解决方案1】:

试试这个:

Sub SUM_Workbooks()
    Dim FileNameXls, f
    Dim wb As Workbook, i As Integer

    FileNameXls = Application.GetOpenFilename(filefilter:="Excel Files, *.xls*", MultiSelect:=True)

    If Not IsArray(FileNameXls) Then Exit Sub

    Application.ScreenUpdating = False
    'clear previous values
    ThisWorkbook.Sheets("Sheet1").Range("A1:A30").Clear
    For Each f In FileNameXls
        Set wb = Workbooks.Open(f)
        For i = 1 To 3
            wb.Worksheets(i).Range("A1:N1").Copy
            'change Sheet1 to suit
            ThisWorkbook.Sheets("Sheet1").Range("A" & 1 + 10 * (i - 1)).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, Transpose:=True
        Next i
        wb.Close SaveChanges:=False
    Next f

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

【讨论】:

  • 谢谢!它起作用了。:) 我有一个名为“报告”的现有工作表。如果我想将它(相同的内容,相同的单元格)粘贴到那里而不是粘贴到新的 sheet1 中怎么办。
  • 只需将ThisWorkbook.Sheets("Sheet1") 更改为ThisWorkbook.Sheets("report")
  • 非常感谢!我之前确实试过。但我没有意识到我已经合并了一些单元格。现在按预期工作。非常感谢:)
  • 嗨。我有一个澄清。代码从每一行获取值,直到 9 个单元格。我有一张表,其中包含从 A1 到 NI 的 14 个值。最后 4 个值被截断。有没有办法将每行复制的限制增加到 15 个单元格?
  • 谢谢!我想通了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
相关资源
最近更新 更多