Excel SumIf在非活动工作表中并存储为数组元素
我的目标是Excel SumIf在非活动工作表中并存储为数组元素,excel,vba,Excel,Vba,我的目标是SumIf在非活动工作表中,将结果值存储为数组元素,然后将数组转换到此工作簿中,保持最小的视觉和处理速度中断 代码: 以下是1004个错误: Arr1(i) = wsf.SumIfs(.Columns("BF3:BF" & k), .Columns("B3:B" & k), .Cells(1, 1), .Columns("BP3:BP" & k), .Cells(i + 2, 1)) 现在,由于msg
SumIf
在非活动工作表中,将结果值存储为数组元素,然后将数组转换到此工作簿中,保持最小的视觉和处理速度中断
代码:
以下是1004个错误:
Arr1(i) = wsf.SumIfs(.Columns("BF3:BF" & k), .Columns("B3:B" & k), .Cells(1, 1), .Columns("BP3:BP" & k), .Cells(i + 2, 1))
现在,由于msg只提供了发生错误类型的警报,因此没有提供进一步的详细信息,最可能的原因是(in)活动工作表的位置,但是激活-将相关工作表向前移动-被证明不成功,语法似乎正确引用了对象,无需激活(这很难看)
导致此错误的原因是什么?.Columns(“BF3:BF”&k)
(举一个例子)应该是.Range(“BF3:BF”&k)
您需要在此处使用范围
,而不是列
,因为您使用的不是整个列,而是列的子集
人们可以做
列(1)
或列(“A”)
或列(“A:A”)
,但不能做列(“A1:A10”)
。列(“BF3:BF”&k)
(举一个例子)应该是。范围(“BF3:BF”&k)
^^^^基本上将列的所有实例更改为范围。非常感谢。出于好奇,.Columns用法为什么不正确?因为您使用的不是整个列,而是子集。您可以执行列(1)
或列(“a”)
或列(“a:a”)
,但不能执行列(“A1:A10”)
。明白。谢谢。
Arr1(i) = wsf.SumIfs(.Columns("BF3:BF" & k), .Columns("B3:B" & k), .Cells(1, 1), .Columns("BP3:BP" & k), .Cells(i + 2, 1))