Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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

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
Excel 带布尔触发器的VBA Averageifs_Excel_Vba_Flags - Fatal编程技术网

Excel 带布尔触发器的VBA Averageifs

Excel 带布尔触发器的VBA Averageifs,excel,vba,flags,Excel,Vba,Flags,我试图以一种高效的方式,基于这些布尔触发器,对75000行进行averageif计算 见下文,我现在尝试使用该标志来计算平均值,但它不起作用-有人能告诉我哪里出了问题吗?此外,使用Averageifs是否会占用大量处理器,我是否应该使用其他方法?谢谢 Sub segment_trigger_returns() Application.ScreenUpdating = False Dim segment_trigger As Boolean Dim data_set As Variant data

我试图以一种高效的方式,基于这些布尔触发器,对75000行进行averageif计算

见下文,我现在尝试使用该标志来计算平均值,但它不起作用-有人能告诉我哪里出了问题吗?此外,使用Averageifs是否会占用大量处理器,我是否应该使用其他方法?谢谢

Sub segment_trigger_returns()
Application.ScreenUpdating = False
Dim segment_trigger As Boolean
Dim data_set As Variant
data_set = Range("A4:AV75617")
alpha_1y = Range("S4:S759617")
Dim i As Long
For i = 2 To UBound(data_set, 1)
company_name_curperiod = data_set(i, 3)
company_name_prevperiod = data_set(i - 1, 3)
segments_curperiod = data_set(i, 10)
segments_prevperiod = data_set(i - 1, 10)
If company_name_curperiod = company_name_prevperiod And segments_curperiod <> segments_prevperiod Then
segment_trigger = True
Else: segment_trigger = False
End If
Next i
Sheets("Control").Range("K6") = Application.WorksheetFunction.AverageIfs(alpha_1y, segment_trigger = True)
Application.ScreenUpdating = True
End Sub
子段触发返回()
Application.ScreenUpdating=False
Dim段_触发器为布尔值
Dim数据_设置为变量
数据集=范围(“A4:AV75617”)
alpha_1y=范围(“S4:S759617”)
我想我会坚持多久
对于i=2到UBound(数据集,1)
公司名称当前周期=数据集(i,3)
公司名称前期=数据集(i-1,3)
分段时间=数据集(i,10)
段=数据集(i-1,10)
如果公司名称\u curperiod=公司名称\u prevperiod和分段\u curperiod分段\u prevperiod,则
段_触发器=真
否则:段_触发器=错误
如果结束
接下来我
工作表(“控制”)。范围(“K6”)=应用程序。工作表功能。平均值IFS(alpha_1y,段触发=True)
Application.ScreenUpdating=True
端接头

您忘记声明
alpha_1y
-它应该是
范围
,也应该是
设置
。将
选项Explicit
添加到模块顶部。
段触发=True
似乎是多余的:
True=True
只是
True
,对于
False=True
也是如此。