以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何进行纵向统计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58733)

--  作者:zhangchi96
--  发布时间:2014/10/22 21:09:00
--  如何进行纵向统计

表   名:表A

窗体名:统计窗体

表内容截图:

 


图片点击可在新窗口打开查看此主题相关图片如下:统计表.jpg
图片点击可在新窗口打开查看

 

表内容说明:表中非绿色部分是根据职工信息表中的“年龄”和“职务”以及“组别”统计得到的结果,由于职工的信息不完整,导致统计的结果中出现分类统计的和与总计之间存在误差,现在要根据白色部分的数据计算得出绿色部分的数据,在窗体中增加“计算误差”按钮。

 

首先,计算“年龄统计误差”列的代码如下:

     With  DataTables("表A")
          For Each dr As DataRow In DataTables("表A").DataRows
              dr("年龄统计误差") = dr("合计") - dr("三十岁以下") - dr("三十岁") - dr("三十岁以上")
          Next
     End With

     以上是横向统计

其次,需要计算第5行、第9行、第10行的数据,

        第5行=第2行-第3行-第4行

        第9行=第6行-第7行-第8行

        第10行=第1行-第2行-第6行,恳请请专家帮我设计计算代码!!

再次,所有的横向、纵向误差值不为0则以黄色显示警告,又需要如果设置?

 

重点是设置计算误差值的代码,请高手不吝指教,谢谢!

 

上传制作的项目如下,请指正: 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:误差计算.rar


--  作者:有点甜
--  发布时间:2014/10/22 21:22:00
--  

 汗...

 

Dim t As Table = Tables("表A")
For Each r As Row In t.Rows
    If r.Index = 4 Then
        r("合计") = t.Rows(1)("合计") - t.Rows(2)("合计") - t.Rows(3)("合计")
        r("三十岁以下") = t.Rows(1)("三十岁以下") - t.Rows(2)("三十岁以下") - t.Rows(3)("三十岁以下")
        r("三十岁") = t.Rows(1)("三十岁") - t.Rows(2)("三十岁") - t.Rows(3)("三十岁")
        r("三十岁以上") = t.Rows(1)("三十岁以上") - t.Rows(2)("三十岁以上") - t.Rows(3)("三十岁以上")
        r("年龄统计误差") = r("合计") - r("三十岁以下") - r("三十岁") - r("三十岁以上")
    Else If r.Index = 8 Then
        r("合计") = t.Rows(5)("合计") - t.Rows(6)("合计") - t.Rows(7)("合计")
        r("三十岁以下") = t.Rows(5)("三十岁以下") - t.Rows(6)("三十岁以下") - t.Rows(7)("三十岁以下")
        r("三十岁") = t.Rows(5)("三十岁") - t.Rows(6)("三十岁") - t.Rows(7)("三十岁")
        r("三十岁以上") = t.Rows(5)("三十岁以上") - t.Rows(6)("三十岁以上") - t.Rows(7)("三十岁以上")
        r("年龄统计误差") = r("合计") - r("三十岁以下") - r("三十岁") - r("三十岁以上")
    Else If r.Index = 9 Then
        r("合计") = t.Rows(0)("合计") - t.Rows(1)("合计") - t.Rows(5)("合计")
        r("三十岁以下") = t.Rows(0)("三十岁以下") - t.Rows(1)("三十岁以下") - t.Rows(5)("三十岁以下")
        r("三十岁") = t.Rows(0)("三十岁") - t.Rows(1)("三十岁") - t.Rows(7)("三十岁")
        r("三十岁以上") = t.Rows(0)("三十岁以上") - t.Rows(1)("三十岁以上") - t.Rows(5)("三十岁以上")
        r("年龄统计误差") = r("合计") - r("三十岁以下") - r("三十岁") - r("三十岁以上")
    Else
        r("年龄统计误差") = r("合计") - r("三十岁以下") - r("三十岁") - r("三十岁以上")
    End If
Next
   


--  作者:zhangchi96
--  发布时间:2014/10/22 21:26:00
--  
十分感谢!从没做过纵向统计。