Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Vba 多张图纸上的Sumif之和_Vba_Excel - Fatal编程技术网

Vba 多张图纸上的Sumif之和

Vba 多张图纸上的Sumif之和,vba,excel,Vba,Excel,我知道我做得不好,但我是一个VBA初学者,我试图在工作簿的多个工作表上执行一个值的求和运算,然后返回这些求和运算的总和 我就是这样尝试的,但我得到了一个名字?错误,不知道从这里走到哪里 Public Function Lookup(x As Long) As Long Dim sh As Worksheet, wb As Workbook, arr() As Variant Set wb = Workbooks.Open("Purchased.xlsm") For Each sh In w

我知道我做得不好,但我是一个VBA初学者,我试图在工作簿的多个工作表上执行一个值的求和运算,然后返回这些求和运算的总和

我就是这样尝试的,但我得到了一个名字?错误,不知道从这里走到哪里

Public Function Lookup(x As Long) As Long

Dim sh As Worksheet, wb As Workbook, arr() As Variant

Set wb = Workbooks.Open("Purchased.xlsm")

For Each sh In wb
    arr() = Application.SumIf(Range("A1:A10000"), x, Range("B1:B10000"))
Next

Lookup = Application.WorksheetFunction.Sum(arr())

End Function
我无法让它工作,它返回一个#值!错误,但我认为这可能更接近我需要的:

Public Function AddItUp(x As Long) As Long
Dim sh As Worksheet, wb As Workbook, RunningSum() As Variant
Dim i As Long, j As Long
Set wb = Workbooks.Open("Week1Input.xlsm")
j = wb.Worksheets.Count
ReDim RunningSum(1 To j)
For i = 1 To j
    RunningSum(i) = Application.SumIf(wb.sh(i).Range("A1:A10"), x, wb.sh(i).Range("B1:B10"))
Next i
AddItUp = Application.WorksheetFunction.Sum(RunningSum)
End Function

不能为空数组赋值。将
arr()。此外,查找是excel中的内置函数名,这会让excel(和其他用户)感到困惑


我最终只是合并了工作手册,因为这是我让它工作的唯一方法:

Public Function AddItUp(x As Long) As Long
Dim RunningSum() As Variant
Dim i As Long, j As Long
j = ActiveWorkbook.Worksheets.Count
ReDim RunningSum(3 To j)
For i = 3 To j
    RunningSum(i) = Application.SumIf(Worksheets(i).Range("A1:A10000"), x, Worksheets(i).Range("B1:B10000"))
Next i
AddItUp = Application.WorksheetFunction.Sum(RunningSum)
End Function

非常感谢你为我指明了一个更好的方向!!所以,我用Lookup来缩短我所拥有的,谢谢你的指针。当我使用这个代码时,我得到一个#值!错误。我试着确保所有格式都正确,看起来一切都很好,但仍然会出现错误。有什么问题吗?我在这方面做了更多的工作,以发现RunningSum=RunningSum+应用程序。。。。无法在每个工作表循环时存储其值。是否有一种解决方案来存储For循环的输出并对其求和?再次查看该函数,您可能需要使用
SumIf(sh.Range(“A1:A10000”)、x、sh.Range(“B1:B10000”)
,以确保excel知道要查看的范围,但我仍然得到一个#值!错误。我想出了另一个主意,但也不管用。我会把它贴在上面。
Public Function AddItUp(x As Long) As Long
Dim RunningSum() As Variant
Dim i As Long, j As Long
j = ActiveWorkbook.Worksheets.Count
ReDim RunningSum(3 To j)
For i = 3 To j
    RunningSum(i) = Application.SumIf(Worksheets(i).Range("A1:A10000"), x, Worksheets(i).Range("B1:B10000"))
Next i
AddItUp = Application.WorksheetFunction.Sum(RunningSum)
End Function