Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Re:在多张图纸中取一个值(求和),然后插入到主图纸中_Excel_Vba - Fatal编程技术网

Excel Re:在多张图纸中取一个值(求和),然后插入到主图纸中

Excel Re:在多张图纸中取一个值(求和),然后插入到主图纸中,excel,vba,Excel,Vba,回复:从多张图纸创建主控图纸 多页说明:包含许多行和列的表。列标题相同,但行不同。每张纸都是一个日期 任务:从特定列中获取单个值(总是碰巧是M列)。我想要的值是该列的总和。取此求和值并插入到母版图纸中 到目前为止,我的努力是: Sub append_master_sheet() Dim wAppend As Worksheet, wSheet As Worksheet Dim LastRow As Long Set wAppend = Worksheets("Mast

回复:从多张图纸创建主控图纸

多页说明:包含许多行和列的表。列标题相同,但行不同。每张纸都是一个日期

任务:从特定列中获取单个值(总是碰巧是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
Sub-append\u-master\u-sheet()
将图纸标注为工作表,将图纸标注为工作表
最后一排一样长
Set wAppend=工作表(“主工作表”)
对于工作表中的每个工作表
如果wSheet.Name wAppend.Name那么
LastRow=工作表function.Max(3,wAppend.Cells(65536,2).End(xlUp).Row)
wSheet.UsedRange.Resize(,13).复制目标:=wAppend.Cells(LastRow,2)
如果结束
下一页
端接头
1) 。它需要全部13列,而不仅仅是第13列。(我知道这是因为我将其设置为13,因为我不知道如何循环浏览前面的列并跳过它们,以仅返回第13列数据(在该列中返回列的总数,而不是离散的行项目)

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

您能建议如何修改上述代码以

1) 仅返回多个工作表(日历日期)中M列的合计值,并插入主数据

谢谢,
N

这就是您正在尝试的(未经测试的

正如我在上面的评论中提到的,请参阅关于如何查找列中最后一行的链接

我已经对代码进行了注释,这样您在理解代码时就不会有问题。但如果您这样做了,只需发回:)

注意:我假设M列中的最后一个单元格具有总和

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
选项显式
子附加主表()
将图纸标注为工作表,将图纸标注为工作表
调暗wApLRow为长,wShLRow为长
Set wAppend=此工作簿。工作表(“主工作表”)
“~~>获取应放置输出的最后一行
wApLRow=wAppend.Range(“B”&wAppend.Rows.Count)。结束(xlUp)。行+1
对于工作表中的每个工作表
如果wSheet.Name wAppend.Name那么
用wSheet
“~~>找到M列中具有和的最后一行
wShLRow=.Range(“M”和.Rows.Count).End(xlUp).Row
“~~>将值复制到母版图纸
wAppend.Range(“B”和wApLRow).Value=.Range(“M”和wShLRow).Value
“~~>为下一个输出增加行数
wApLRow=wApLRow+1
以
如果结束
下一页
端接头

用于查找最后一行非常感谢Siddharth花时间阅读我的问题,提供建议。此外,添加注释来解释为使代码正常工作而引入的更改的目的是非常受欢迎的。非常感谢。