以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何做统计表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69693)

--  作者:青岛hhh
--  发布时间:2015/6/9 14:58:00
--  [求助]如何做统计表

各位老师:

做了个统计表

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1_201506091121.zip

不知道该怎样实现,请老师指教:

1,数据表1,数据表2结构相同,日期列,名称列数据相同,“指标1”,“指标2”,“指标3”的数据不同。

2,要计算两表,“指标1”,“指标2”,“指标3”的数据差占比到汇总表。

   即:汇总表的指“标项列”的值为指标1,指标2,指标3,......。

        汇总表的第一行为(数据表1“指标1”-数据表2“指标1”)/数据表1“指标1”,分别计入“小于负100”列,“负100到0”列,等各列。

        汇总表的第二行为(数据表1“指标2”-数据表2“指标2”)/数据表1“指标2”,分别计入“小于负100”列,“负100到0”列,等各列。

         .

         .

         .

         .


--  作者:大红袍
--  发布时间:2015/6/9 15:06:00
--  
Dim cs() As String = {"指标1", "指标2", "指标3"}
For Each c As String In cs
    Dim ndr As DataRow = DataTables("汇总").AddNew
    ndr("指标项") = c
    Dim d1 As Double = DataTables("数据1").Compute("sum(" & c & ")")
    Dim d2 As Double =     DataTables("数据2").Compute("sum(" & c & ")")
    ndr("小于负100") = (d1-d2) / d1
Next

--  作者:青岛hhh
--  发布时间:2015/6/10 8:44:00
--  

大红袍老师:

   感谢你的帮助!

   计算要求我没讲清楚。

   计算:

         1,计算每一个指标数值的变动率,("数据1"的每一个指标数值-相对应"数据2"的每一个指标数值)/"数据1"的每一个指标数值.

         2, 在"汇总"表分别统计"指标1", "指标2", "指标3"在各变动范围“小于负100”列(小于-1),“负100到0”列(-1-0),),“等于0”列    (0),),“0到100”列(0-1),),“大于100”列(大于1),的频次。

          是不是改  Dim d1 As Double = DataTables("数据1").Compute("sum(" & c & ")")
                       Dim d2 As Double =     DataTables("数据2").Compute("sum(" & c & ")")
                       ndr("小于负100") = (d1-d2) / d1

                       这3条代码?

 

[此贴子已经被作者于2015/6/10 8:45:56编辑过]

--  作者:大红袍
--  发布时间:2015/6/10 9:12:00
--  
Dim cs() As String = {"指标1", "指标2", "指标3"}
For Each c As String In cs
    Dim ndr As DataRow = DataTables("汇总").AddNew
    ndr("指标项") = c
    For i As Integer = 0 To Tables("数据1").Rows.Count - 1
        Dim r1 As Row = Tables("数据1").Rows(i)
        Dim r2 As Row = Tables("数据2").Rows(i)
        Dim result As Double = (r1(c)-r2(c)) / r1(c)
        If result < -1 Then
            ndr("小于负100") += 1
        ElseIf result < 0 Then
            ndr("负100到0") += 1
        ElseIf result = 0 Then
            ndr("等于0") += 1
        ElseIf result < 1 Then
            ndr("零到100") += 1
        ElseIf result = 1 Then
            ndr("等于100") += 1
        End If
    Next
Next

--  作者:青岛hhh
--  发布时间:2015/6/11 16:56:00
--  
 

Dim cs() As String = { "指标1", "指标2","指标3","指标4","指标5","指标6","指标7","指标8","指标9","指标10","指标11","指标12","指标13","指标14","指标15" ," 指标16","指标17","指标18","指标19" }

For Each c As String In cs

    Dim ndr As DataRow = DataTables("变动").AddNew

    ndr("指标") = c

    For i As Integer = 0 To Tables("变中").Rows.Count - 1

        Dim r1 As Row = Tables("变中").Rows(i)

        Dim r2 As Row = Tables("变后").Rows(i)

        Dim result As Double = (r2(c)-r1(c)) / r1(c)

        If result <= -1 Then

            ndr("小于负1") += 1

        ElseIf result < 0 And result > -1 Then

            ndr("负1到0") += 1

        ElseIf result = 0 Then

            ndr("等于0") += 1

        ElseIf result < 1 And result > 0Then

            ndr("从0到1") += 1

        ElseIf result >=1  Then

            ndr("大于1") += 1

        End If

    Next

Next

 

提示:索引 97 不是为负数,就是大于行数。

 

不知道哪里错了


--  作者:大红袍
--  发布时间:2015/6/11 16:59:00
--  

这句代码有问题

 

 Dim r2 As Row = Tables("变后").Rows(i)

 

也就是说,你两个表的表的行数,没有匹配,也就是行数少了。


--  作者:青岛hhh
--  发布时间:2015/6/11 17:10:00
--  
通过了,谢谢大红袍老师的帮助