Foxtable(狐表)用户栏目专家坐堂 → 这样的平均分要求如何实现?


  共有4197人关注过本帖树形打印复制链接

主题:这样的平均分要求如何实现?

帅哥哟,离线,有人找我吗?
hbfnmxb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6282 威望:0 精华:0 注册:2008/9/7 20:15:00
这样的平均分要求如何实现?  发帖心情 Post By:2023/2/26 15:46:00 [只看该作者]

如下图:
图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
如果三次成绩都有,则按三次成绩相加,再除以3,得到平均分。个别学生缺考,有的缺考一次,有的缺考两次。
少一次成绩的,按两次成绩相加再除以2来计算平均分。
少两次成绩的,则按一次成绩除以1来计算平均分,老师这个平均分列的公式或者按钮或者DataColChanging,如何来写,谢谢老师!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/26 20:17:00 [只看该作者]

使用2个变量,一个计数,一个求和

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

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2023/2/27 11:28:00 [只看该作者]

你没有明白他的意思,他是横向求和,不是纵向求和。

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2023/2/27 11:29:00 [只看该作者]

你要先明确0分和空格都算缺考吗?还是只有空格才算缺考



 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6282 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2023/2/27 15:49:00 [只看该作者]

0分和空格都算缺考,横向求和。老师公式怎么写?谢谢。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6282 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2023/2/27 19:09:00 [只看该作者]

感谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6282 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/27 20:15:00 [只看该作者]

我只是写了关键的逻辑,自己学会写完整的代码:http://www.foxtable.com/webhelp/topics/2044.htm

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6282 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2023/2/27 21:23:00 [只看该作者]

没学会之前,还需要请教老师

 回到顶部
总数 12 1 2 下一页