excel代码中引用公式请教? 30
在这段代码中,您正在使用IF和StDev函数来计算特定范围内数值的标准差。
IF函数的语法为:
IF(logical_test, value_if_true, value_if_false)
其中,logical_test是要测试的逻辑表达式,value_if_true是在逻辑表达式为TRUE时返回的值,value_if_false是在逻辑表达式为FALSE时返回的值。
StDev函数的语法为:
StDev(number1, [number2], …)
其中,number1、number2等是要求标准差的数字。
在您的代码中,Sheet190.Range(Sheet190.Cells(1, 3), Sheet190.Cells(500, 3))表示从第1行第3列到第500行第3列的范围。这个范围内的所有单元格的值都会被传递给IF函数,并根据其值是否等于3来返回对应的值。
如果您的代码报错,可能是因为以下原因之一:
您的代码中的Sheet190对象没有被正确定义。
您的代码中的Cells方法的参数不正确。
您的代码中的Range方法的参数不正确。
您的代码中的IF函数的参数不正确。
您的代码中的StDev函数的参数不正确。
建议您检查代码是否存在以上问题,并根据错误提示进行修改。
如果您仍然无法解决问题,可以尝试输出调试信息来查看问题出在哪里。例如,您可以在代码中输出变量的值,或者使用Debug.Print语句来输出调试信息。
我直接输入Cells(1, 1) = Application.WorksheetFunction.StDev(Sheet190.Range(Sheet190.Cells(1, 4), Sheet190.Cells(500, 4)))可以正常计算,问题就出在Application.WorksheetFunction.IF(Sheet190.Range(Sheet190.Cells(1, 3), Sheet190.Cells(500, 3)) = 3, Sheet190.Range(Sheet190.Cells(1, 4), Sheet190.Cells(500, 4)))这段,提示类型不匹配
如果代码中出现错误,最可能的原因是:
数据中存在非数值类型的元素,例如文本或空单元格。在计算标准差时,STDEV函数只能计算数值类型的数据,所以在处理数据之前,请确保它们都是数值类型的。
IF函数的第一个参数(Sheet190.Range(Sheet190.Cells(1, 3), Sheet190.Cells(500, 3)) = 3)没有返回正确的布尔值。在使用IF函数时,请确保它的第一个参数是一个布尔值,并且只返回True或False两种结果。
要修复上面的代码,请参考以下示例代码:
Cells(1, 1) = Application.WorksheetFunction.StDev(Application.WorksheetFunction.IF(Sheet190.Range(Sheet190.Cells(1, 3), Sheet190.Cells(500, 3)) = 3, Sheet190.Range(Sheet190.Cells(1, 4), Sheet190.Cells(500, 4)), ""))
这里我们把IF函数的第三个参数设置为空字符串,以确保IF函数能够处理空单元格和非数值类型的元素。
是一个数组公式VBA里不好直接引用的,试一下
Cells(1, 1).FormulaArray = "=STDEV(IF(Sheet190!C3:C500=3,Sheet190!D3:D500))"
Cells(1, 1) = Cells(1, 1).Value
2022-12-18 · 知道合伙人软件行家