excel代码中引用公式请教? 30

Cells(1,1)=Application.WorksheetFunction.StDev(Application.WorksheetFunction.IF(Sheet... 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))))上面代码求3班的标准差,报错,请教如何修改?不想改变range方式,因为原代码中用的变量Sheet190.Range(Sheet190.Cells(bjhh + 1, kmlh401), Sheet190.Cells(nrow401, kmlh401)) 展开
 我来答
龙城孔明
2022-12-17 · TA获得超过181个赞
知道小有建树答主
回答量:205
采纳率:100%
帮助的人:40万
展开全部

在这段代码中,您正在使用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)))这段,提示类型不匹配
科技时坛
2023-02-12 · 一息知科技,一刻懂科普,流时累知。
科技时坛
采纳数:6 获赞数:2

向TA提问 私信TA
展开全部

如果代码中出现错误,最可能的原因是:

  • 数据中存在非数值类型的元素,例如文本或空单元格。在计算标准差时,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函数能够处理空单元格和非数值类型的元素。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庆年工坊
2022-12-19 · 知道合伙人互联网行家
庆年工坊
知道合伙人互联网行家
采纳数:4233 获赞数:8926

向TA提问 私信TA
展开全部
=STDEV(IF(C3:C500=3,D3:D500))
是一个数组公式VBA里不好直接引用的,试一下
Cells(1, 1).FormulaArray = "=STDEV(IF(Sheet190!C3:C500=3,Sheet190!D3:D500))"
Cells(1, 1) = Cells(1, 1).Value
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skyzxh

2022-12-18 · 知道合伙人软件行家
skyzxh
知道合伙人软件行家
采纳数:2623 获赞数:8339
毕业于中科院,硕士,30年工程从业经验。现任公司技术负责。

向TA提问 私信TA
展开全部
可能原代码里的这段Range语句输出是数组,而你这样If过后就不是数组了。你应该先把=3的放到一个数组里,再进行计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式