以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样的平均分要求如何实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185501)

--  作者:hbfnmxb
--  发布时间:2023/2/26 15:46:00
--  这样的平均分要求如何实现?
如下图:
图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
如果三次成绩都有,则按三次成绩相加,再除以3,得到平均分。个别学生缺考,有的缺考一次,有的缺考两次。
少一次成绩的,按两次成绩相加再除以2来计算平均分。
少两次成绩的,则按一次成绩除以1来计算平均分,老师这个平均分列的公式或者按钮或者DataColChanging,如何来写,谢谢老师!

--  作者:有点蓝
--  发布时间:2023/2/26 20:17:00
--  
使用2个变量,一个计数,一个求和

然后遍历这3个列,如果列1 有数据,计数+1,求和累加;如果列2 有数据,计数+1,求和累加;....。最后求和值除以计数值即可

--  作者:天宇科技
--  发布时间:2023/2/27 11:28:00
--  
你没有明白他的意思,他是横向求和,不是纵向求和。
--  作者:天宇科技
--  发布时间:2023/2/27 11:29:00
--  
你要先明确0分和空格都算缺考吗?还是只有空格才算缺考



--  作者:hbfnmxb
--  发布时间:2023/2/27 15:49:00
--  
0分和空格都算缺考,横向求和。老师公式怎么写?谢谢。
--  作者:有点蓝
--  发布时间:2023/2/27 16:02:00
--  
就是2楼的用法

dim 计数,求和 as double
for each s as string in {"成绩1",“成绩2”,....}
if e.datarow(s) > 0 then
计数 += 1
求和 += e.datarow(s) 
end if
if 计数 > 0 then
e.datarow(“平均”) =  求和 / 计数 
els
e.datarow(“平均”) =  nothing
end if

--  作者:hbfnmxb
--  发布时间:2023/2/27 19:09:00
--  
感谢老师
--  作者:hbfnmxb
--  发布时间:2023/2/27 20:04:00
--  
提示这个,不知道错在哪里
图片点击可在新窗口打开查看此主题相关图片如下:00a.png
图片点击可在新窗口打开查看


代码如下:
Dim 计数, 求和 As Double
For Each s As String In {"位次22年", "位次21年", "位次20年"}
    If e.DataRow(s) > 0 Then
        计数 += 1
        求和 += e.DataRow(s) 
    End If
    If 计数 > 0 Then
        e.DataRow("排名均分") = 求和 / 计数 
    Else
        e.DataRow("排名均分") = Nothing
    End If
Next

--  作者:有点蓝
--  发布时间:2023/2/27 20:15:00
--  
我只是写了关键的逻辑,自己学会写完整的代码:http://www.foxtable.com/webhelp/topics/2044.htm
--  作者:hbfnmxb
--  发布时间:2023/2/27 21:23:00
--  
没学会之前,还需要请教老师