Re:在多个工作表中取一个值(即求和)并插入到主工作表中

时间:2013-12-12 19:21:20

标签: excel-vba vba excel

Re:从多张纸上创建一张主表。

多表说明:包含许多行和列的表。列标题相同但行有所不同。每张表都是日期。

任务:从特定列中获取单个值(总是恰好是M列)。我想要的值是该列的总和。取这个求和值并插入主表。

到目前为止,我的尝试是:

Sub append_master_sheet()

    Dim wAppend As Worksheet, wSheet As Worksheet
    Dim LastRow As Long

    Set wAppend = Worksheets("Master")

    For Each wSheet In Worksheets
        If wSheet.Name <> wAppend.Name Then

    LastRow = WorksheetFunction.Max(3, wAppend.Cells(65536, 2).End(xlUp).Row)
    wSheet.UsedRange.Resize(, 13).Copy Destination:=wAppend.Cells(LastRow, 2)

        End If

    Next wSheet

End Sub

1)。它需要所有13列而不是第13列。 (我看到这是因为我将其设置为13,因为我不知道如何循环前面的列并跳过它们只返回第13列数据(并且在此列中返回列的总数,而不是离散行项目

2)除了返回所有有问题的数据外,它实际上一直跳过M列中的最终值。

您能否建议如何将上述代码修改为

1)仅返回多个工作表(日历日期)中M列的总和值并插入到母版中。

感谢, Ñ

1 个答案:

答案 0 :(得分:0)

这是你正在尝试的( UNTESTED

就像我在上面的评论中提到的那样,请参阅有关如何查找列中最后一行的THIS链接。

我已对代码进行了评论,以便您在理解代码时不会遇到任何问题。但如果你这样做,只需回复:)

注意:我假设Col M中的最后一个单元格具有SUM

Option Explicit

Sub append_master_sheet()
    Dim wAppend As Worksheet, wSheet As Worksheet
    Dim wApLRow As Long, wShLRow As Long

    Set wAppend = ThisWorkbook.Worksheets("Master")

    '~~> Get the last row where the ouput should be placed
    wApLRow = wAppend.Range("B" & wAppend.Rows.Count).End(xlUp).Row + 1

    For Each wSheet In Worksheets
        If wSheet.Name <> wAppend.Name Then
            With wSheet
                '~~> Fuind the last row in Col M which has the sum
                wShLRow = .Range("M" & .Rows.Count).End(xlUp).Row
                '~~> Copy over the values to Master Sheet
                wAppend.Range("B" & wApLRow).Value = .Range("M" & wShLRow).Value
                '~~> Increment the row for next output
                wApLRow = wApLRow + 1
            End With
        End If
    Next wSheet
End Sub