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


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

主题:请教统计问题

美女呀,离线,留言给我吧!
意悠心轻
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 18:01:00 [只看该作者]

   还有没列的工时、金额,行合计。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 18:05:00 [只看该作者]

金额列统计的是总金额啊,你可以改成你对应的计时金额列啊

 

g.Totals.AddDef("总金额", "总金额")


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 18:07:00 [只看该作者]

    有金额行,没统计结果。

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 18:10:00 [只看该作者]

我上传效果给你看。
[此贴子已经被作者于2016/6/26 15:42:18编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/25 18:10:00 [只看该作者]

汗,什么都要别人帮你做

 

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    Dim t As Table = e.Form.controls("table1").Table
    t.StopRedraw
    t.datasource = g.BuildDataSource
    t.DataTable.DataCols.add("数据", Gettype(String))
    t.DataTable.ReplaceFor("数据", "工时")
   
    g = New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("总金额", "总金额")
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    g.Build
    For Each r As Row In Tables("统计表1").Rows
        Dim nr As Row = t.AddNew
        For i As Integer = 0 To t.Cols.count - 2
            nr(i) = r(i)
        Next
        nr("数据") = "金额"
    Next
    t.DataTable.DataCols.add("小计", Gettype(String))
    For Each r As Row In t.Rows
        Dim sum As Double = 0
        For i As Integer = 1 To t.Cols.count - 3
            sum += r(i)
        Next
        r("小计") = sum
    Next
    t.Cols("数据").Move(1)
    t.sort = "姓名,数据"
    t.ResumeRedraw
End If


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 18:27:00 [只看该作者]

因为这统计方式实在太复杂,在EXCEL中它们的公式是:
汇总工时=SUMPRODUCT(SUBTOTAL(103,OFFSET(T5,ROW(5:72)-5,))*($B$5:$B$72=$B5)*T$5:T$72)
汇总工资==SUMPRODUCT(SUBTOTAL(103,OFFSET(T5,ROW(5:72)-5,))*($B$5:$B$72=$B6)*T$5:T$72)
以上两个是数组公式,要同按ctil+shift+回车
你给我的公式金额还是没出来。

[此贴子已经被作者于2016/3/27 19:47:07编辑过]

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 20:18:00 [只看该作者]

   哦,执行窗口1计算,金额出来了,但汇总工时和汇总金额效果还没有。

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/25 20:22:00 [只看该作者]

    行,汇总工时和汇总金额我自己想。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/27 12:42:00 [只看该作者]

Dim d As Date
If Date.TryParse(e.sender.text, d) Then
    Dim g As New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("计时工时", "计时工时")
   
    d = New Date(d.year, d.month, 1)
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    Dim t As Table = e.Form.controls("table1").Table
    t.StopRedraw
    t.datasource = g.BuildDataSource
    t.DataTable.DataCols.add("数据", Gettype(String))
    t.DataTable.ReplaceFor("数据", "工时")
   
    g = New CrossTableBuilder("统计表1", DataTables("喷涂车间工资表"))
    g.HGroups.AddDef("姓名")
    g.VGroups.AddDef("日期", DateGroupEnum.None)
    g.Totals.AddDef("总金额", "总金额")
   
    g.Filter = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
    g.Build
    For Each r As Row In Tables("统计表1").Rows
        Dim nr As Row = t.AddNew
        For i As Integer = 0 To t.Cols.count - 2
            nr(i) = r(i)
        Next
        nr("数据") = "金额"
    Next
    t.DataTable.DataCols.add("小计", Gettype(Double))
    For Each r As Row In t.Rows
        Dim sum As Double = 0
        For i As Integer = 1 To t.Cols.count - 3
            sum += r(i)
        Next
        r("小计") = sum
    Next
    t.Cols("数据").Move(1)
    t.sort = "姓名,数据"
    t.DataTable.DataCols.Add("_Sortkey", Gettype(Double))
    For Each r As Row In t.Rows
       
        r("_Sortkey") = r.Index
    Next
    t.sort = ""
   
    Dim r1 As Row = t.AddNew
    Dim r2 As Row = t.AddNew
    r1("姓名") = "工时汇总"
    r1("_Sortkey") = t.Rows.count
    r2("姓名") = "金额汇总"
    r2("_Sortkey") = t.Rows.count + 1
   
   
    For i As Integer = 0 To t.Cols.count - 1
        If t.Cols(i).IsNumeric Then
            r1(i) = t.Compute("sum(" & t.Cols(i).name & ")", "数据 = '工时'")
            r2(i) = t.Compute("sum(" & t.Cols(i).name & ")", "数据 = '金额'")
        End If
    Next
    t.ResumeRedraw
End If

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/3/27 13:49:00 [只看该作者]

    非常谢谢,把计时工时改成上班工时结果就全对了。你没帮我解,我这两天日夜赶看教程,连上医院都拿着手机看帮助里的相关内容,谢谢。

 回到顶部
总数 25 上一页 1 2 3 下一页