【问题标题】:Macro to sum values from another Workbook with Multiple Sheets使用多个工作表对另一个工作簿中的值求和的宏
【发布时间】:2018-07-17 10:58:43
【问题描述】:

我正在开展一个项目,该项目需要我对另一个 Excel 工作簿中的多个值求和。

另一个工作簿包含 120 张纸。我想从每张纸上取一个特定的值,并将其与其余部分相加。所有 120 个值的单元格引用都是固定的,例如 J3。

另一件事值得一提(也许)是工作表代码名称没有组织(即工作表 1 一直到工作表 120),中间添加/删除了几张工作表。

现在我明白了

需要运行时错误 424 对象

Sub SumProject1P()
    Dim Project1P As Workbook
    Dim reserves
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant

    Set Project1P = Workbooks.Open("FILE PATH")
    WS_Count = Workbook.Worksheets.Count
    V = Workbook.Worksheets
    reserves = sumrange(Workbook.Worksheets(V).range(Cells(1, 8)))
End Sub


Function sumrange(range)
    summ = 0
    For i = 1 To WS_Count
        summ = summ + reserves
    Next
    reserves = summ
End Function

我希望收到反馈和意见。

【问题讨论】:

    标签: vba excel worksheet


    【解决方案1】:

    给你

    Sub SumProject1P()
    
    Dim Project1P As Workbook
    Dim reserves As Long
    Dim WS_Count As Integer
    Dim filePath As String
    
        filePath = "Enter you file path"
    
        Set Project1P = Workbooks.Open(filePath, ReadOnly:=True)
        WS_Count = Project1P.Worksheets.Count
    
    
       For i = 1 To WS_Count
        If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
            reserves = reserves + Sheets(i).range("J3")
        End If
       Next
    
       MsgBox "Total of all sheets :" & reserves
    End Sub
    

    【讨论】:

    • 非常感谢桑托什!它确实给了我一个输出,但结果是错误的。它给了我 575,但我期待 578。
    • 在这种情况下,Cells J3 可能将数字存储为文本,修复并重试。
    • 感谢 Santosh 的耐心和帮助!我在所有工作表中将单元格从“常规”设置为“数字”。但答案仍然不正确。您认为这与我在帖子中提到的工作表编号问题有关吗?
    • 我不这么认为是因为表号问题。有没有隐藏的床单?
    • 好的,在我将储备声明为 Variant 后它就起作用了。谢谢你们!
    【解决方案2】:

    您收到object required 错误是因为您没有对任何对象使用Worsheets.count 函数。

    您的代码:

    Set Project1P = Workbooks.Open("FILE PATH")
        WS_Count = Workbook.Worksheets.Count
    

    你需要对Project1P对象使用这个函数。

     Set Project1P = Workbooks.Open("FILE PATH")
        WS_Count = Project1P .Worksheets.Count 
    

    Santosh 已经给了你最简单的方法。不过,如果您想通过使用 Function 来做到这一点,请尝试以下操作。

    Sub Sum()
    
    Dim Project1P As Workbook
        Dim WS_Count As Integer
        Dim i As Integer
        Dim V As Variant
        Set Project1P = Workbooks.Open("File path")
        WS_Count = Project1P.Worksheets.Count
        sumrange (WS_Count)
    
    End Sub
    
    Function sumrange(TotalSheets As Integer)
    
         Dim reserves As Integer
    
         For i = 1 To TotalSheets
             If Sheets(i).range("J3") <> "" And IsNumeric(Sheets(i).range("J3")) Then
                 reserves = reserves + Sheets(i).range("J3")
            End If
         Next
    
        MsgBox "Total of all sheets :" & reserves
    
    End Function
    

    【讨论】:

    • 谢谢南丹阿!
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多