Foxtable(狐表)用户栏目专家坐堂 → 统计的问题


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

主题:统计的问题

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


加好友 发短信
等级:婴狐 帖子:30 积分:309 威望:0 精华:0 注册:2020/3/16 14:20:00
统计的问题  发帖心情 Post By:2020/3/16 14:27:00 [只看该作者]

有一个“稿件”表库,我需要根据这个库,按单位计算本单位作者的稿费,并根据单位内部考核要求,计算出每位作者的稿费在本单位中的占比,以此来计算他的得分。

由于一个稿件多人稿件时,多个作者放在一个格子里,该如何统计呢

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:投稿系统.table


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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/16 15:05:00 [只看该作者]

以这2行数据为例,说明一下,应该怎么分。然后得到什么结果

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:婴狐 帖子:30 积分:309 威望:0 精华:0 注册:2020/3/16 14:20:00
  发帖心情 Post By:2020/3/16 21:21:00 [只看该作者]

同一篇稿件,多个作者,稿费要按人头
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:单位1考核情况表.xlsx

平均分

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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/16 21:48:00 [只看该作者]

作者按人头。单位呢?计算本单位总稿费,比如2楼第二条记录,4个作者4个单位,哪个作者是哪个单位的?还有些3个作者2个单位又怎么区分?

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


加好友 发短信
等级:婴狐 帖子:30 积分:309 威望:0 精华:0 注册:2020/3/16 14:20:00
  发帖心情 Post By:2020/3/17 8:26:00 [只看该作者]

嗯,增加一张作者信息表,每位作者对应了一个单位。
现在这张表里的稿件作者我的对应关系是,作者1-作者5,属于单位1;作者6-作者10,属于单位2,作者11-作者15,属于单位3,作者16-作者20,属于单位4.
我重新上传 了项目,增加了“通讯员”表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:投稿系统.table


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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/17 8:53:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 32)
dtb.AddDef("单位", Gettype(String), 32)
dtb.AddDef("稿费", Gettype(Double))
dtb.Build()

Dim dict As new Dictionary(of String,Double)
For Each r As Row In Tables("稿件").Rows
    Dim ar() As String = r("姓名").split(",")
    Dim fy As Double = r("稿费") / ar.Length
    For Each s As String In ar
        If dict.ContainsKey(s) Then
            dict(s) = dict(s) + fy
        Else
            dict.Add(s,fy)
        End If
    Next
Next
Dim dr,d2 As DataRow
For Each key As String In dict.Keys
    dr = DataTables("统计").AddNew
    dr("姓名") = key
    dr("稿费") = dict(key)
    d2 = DataTables("通讯员").Find("姓名='" & key & "'")
    If d2 IsNot Nothing Then
        dr("单位") = d2("单位")
    End If
Next

Dim g As New GroupTableBuilder("统计表1", DataTables("统计"))
g.Groups.AddDef("单位")
g.Groups.AddDef("姓名")
g.Totals.AddDef("稿费")
g.GroupProportion = True
g.Build()
MainTable = Tables("统计表1")

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


加好友 发短信
等级:婴狐 帖子:30 积分:309 威望:0 精华:0 注册:2020/3/16 14:20:00
  发帖心情 Post By:2020/3/18 8:23:00 [只看该作者]

因为写稿是“编辑部”五位作者“编辑部作者1-编辑部作者5”的主要工作,他们每个月的考核得分为:“稿费占比*20”与“推广得分”之和。

所以需要:

、统计稿费占比时,只统计“编辑部”所有作者

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:投稿系统.table

的稿费占比。

、统计出的占比能否放在固定的表“考核”表中的“占比”。

三、如果可以,稿件在多个作者合作时,在计算占比时,稿费只由“编辑部”的作者(编辑部作者1-编辑部作者5)分配稿费:

1、如果全是编辑部的作者,既“编辑部作者1-编辑部作者5”,大家平均分配稿费。

2、如果作者有其他单位的作者,在计算占比时,稿费也是按照“编辑部”作者的人数来分配,其他单位的作者不分配稿费。


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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/18 9:27:00 [只看该作者]

看懂代码,自己先改改。如果完全看不懂,请先学习:http://www.foxtable.com/webhelp/topics/0207.htm

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


加好友 发短信
等级:婴狐 帖子:30 积分:309 威望:0 精华:0 注册:2020/3/16 14:20:00
  发帖心情 Post By:2020/3/18 9:39:00 [只看该作者]

统计放在固定表试了很久啊,没有哪里说到,搞了一个多星期。


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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/18 9:58:00 [只看该作者]

先生成统计表,然后在把数据移过去即可:

Dim g As New GroupTableBuilder("统计表1", DataTables("统计"))
g.Groups.AddDef("单位")
g.Groups.AddDef("姓名")
g.Totals.AddDef("稿费")
g.GroupProportion = True
g.Build()
for each r as row in Tables("统计表1").rows
 dim dr as datarow in DataTables("考核").find("单位='" & r("单位") & "' and 姓名='" & r("姓名") & "'")
if dr as isnot nothing then
dr("稿费") = r("稿费")
end if
next

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