Vba 如何对多个工作表中的一系列值求和

Vba 如何对多个工作表中的一系列值求和,vba,excel,sum,Vba,Excel,Sum,我想对120个工作表中相同范围的值(比如B3:B292)求和,这样:∑B3,∑B4,∑B5。。。。。。∑B292 我没有得到下面的VBA代码的错误,但它也没有返回任何值 Sub FAggreg1PNFAWO() Dim Aggreg1PNFAWO As Workbook Dim WS_Count As Integer Dim filePath As String Dim i As Integer Dim TotalNp As Variant filePath = "Direct

我想对120个工作表中相同范围的值(比如B3:B292)求和,这样:∑B3,∑B4,∑B5。。。。。。∑B292

我没有得到下面的VBA代码的错误,但它也没有返回任何值

 Sub FAggreg1PNFAWO()

 Dim Aggreg1PNFAWO As Workbook
 Dim WS_Count As Integer
 Dim filePath As String
 Dim i As Integer
 Dim TotalNp As Variant

 filePath = "Directory"

 Set Aggreg1PNFAWO = Workbooks.Open(filePath, ReadOnly:=True)
 WS_Count = Aggreg1PNFAWO.Worksheets.Count


For i = 1 To WS_Count
'Sheets(i).range("B3:B292") <> "" And
If IsNumeric(Sheets(i).range("B3:B292")) Then
    TotalNp = TotalNp + Sheets(i).range("B3:B292")
End If
Next
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.range("T4:T293").Value = TotalNp

End Sub
Sub-FAggreg1PNFAWO()
Dim Aggreg1PNFAWO作为工作簿
Dim WS_计数为整数
将文件路径设置为字符串
作为整数的Dim i
作为变体的Dim-TotalNp
filePath=“目录”
设置Aggreg1PNFAWO=Workbooks.Open(文件路径,只读:=True)
WS_Count=Aggreg1PNFAWO.Worksheets.Count
对于i=1到WS\u计数
“活页(i).范围(“B3:B292”)”和
如果是数字(表(i).范围(“B3:B292”)),则
TotalNp=TotalNp+图纸(i).范围(“B3:B292”)
如果结束
下一个
活动工作簿。关闭
此工作簿。激活
ActiveSheet.range(“T4:T293”)。值=总NP
端接头
在这种情况下,请尝试以下操作:

Sub FAggreg1PNFAWO()
Dim Aggreg1PNFAWO As Workbook, myWB As Workbook
Dim WS_Count As Integer, i As Integer
Dim filePath As String
Dim TotalNp As Variant

Set myWB = ActiveWorkbook
filePath = "Directory"

Set Aggreg1PNFAWO = Workbooks.Open(filePath, ReadOnly:=True)
WS_Count = Aggreg1PNFAWO.Worksheets.Count

For X = 3 To 292
    For i = 1 To WS_Count
        If IsNumeric(Sheets(i).Range("B" & X)) Then
           TotalNp = TotalNp + Sheets(i).Range("B" & X).Value
        End If
    Next
    myWB.Activate
    myWB.ActiveSheet.Range("T" & i + 1).Value = TotalNp
    TotalNp = 0
    Aggreg1PNFAWO.Activate
Next X

End Sub

在这里,您可以使用
SUM
函数来执行此操作。在下面的回答中,我假设
B293
单元格为空,并将其用于求和。如果该单元格中有一些数据,请选择其他空单元格,然后尝试此操作

Sub Sum()

Dim Project1P As Workbook
    Dim WS_Count As Integer
    Dim i As Integer
    Dim V As Variant

    Set Project1P = Workbooks.Open("C:\Users\Nandan\Desktop\SO\SO1.xlsx")
    WS_Count = Project1P.Worksheets.Count
    sumrange (WS_Count)

End Sub

Function sumrange(TotalSheets As Integer)

     Dim reserves As Variant

     For i = 1 To TotalSheets
       Sheets(i).range("B" & 293).Formula = "=SUM(B3:B292)"
     Next

     For i = 1 To TotalSheets
      reserves = reserves + Sheets(i).range("B" & 293)
     Next

     For i = 1 To TotalSheets
      Sheets(i).range("B" & 293).Clear
     Next  

    MsgBox "Total of all sheets :" & reserves

End Function

你没有要求一个值。您的代码检查您的范围
是否为数字
(我怀疑这总是返回FALSE,因此您的总数将始终为“”(正如您将
TotalNp
声明为变量)。因此,您没有得到任何返回。您在此范围内的列是否设置为文本?@pnuts我是VBA新手,不幸的是,我不知道这是什么。您应该在昨天的问题中问这个问题。不要创建重复的问题。@Zac此范围设置为数字。如果我删除条件,只保留求和公式,可以吗?@NandanA这是出于不同的目的,在本例中,我将对一个范围进行求和,而不是对单个单元格进行求和。谢谢!它为输出列中的每个单元格返回相同的值。我认为我在这段代码中的逻辑不正确。我想对120页中的所有B3值进行求和,然后对整个列进行求和。在这种情况下,我刚刚对co进行了更新de应该有用。我以为你是在尝试对整个范围进行求和,而不是逐行求和。非常感谢。我想你在最后一部分的意思是(“T”&X+1)?我把它放好了,它工作得很好。再次感谢@vba\u sql_programmer@Lavender_Lady哈哈,是的,就是这样。如果它有效,别忘了检查答案,因为它对你有效,这样其他人就不会一直试图回答这个问题。