Foxtable(狐表)用户栏目专家坐堂 → 列类型不同,绘制单元格计算占比


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

主题:列类型不同,绘制单元格计算占比

美女呀,离线,留言给我吧!
漂亮美眉vszh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
列类型不同,绘制单元格计算占比  发帖心情 Post By:2016/5/30 12:23:00 [只看该作者]


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

例要计算2016年的达成率,用2016年行的量产值/目标值,利用绘制单元格计算百分比,可下面自己写的代码不对,计算了每一行的达成率都有值了,需要按不同的年度分,请教各位老师代码要怎么改?

If e.Col.Name = "1月" Then '如果正在绘制的是密码列
    Dim ia1 As Double
    Dim ia2 As Double
    Dim ia3 As  Double
    Dim dr1 As DataRow
Dim dr2 As DataRow


    dr1 = DataTables("开模总分析").find("项目 = '量产模' And 年份 = '2016'")
dr2 = DataTables("开模总分析").find("项目 = '目标' And 年份 = '2016'")
 ia3 = round2(dr1("1月")/dr2("1月"),4)


'MessageBox.Show(dr("1月"))
    'ia1 = DataTables("开模总分析").Compute("sum(1月)","项目 = '量产模' and 年份 = '" & e.Row("年份") & "'")
    'ia2 = DataTables("开模总分析").Compute("sum(1月)","项目 = '目标' and 年份 = '" & e.Row("年份") & "'")
   
 
    If e.Row("项目") = "达成率"  Then

   If dr2("1月") < 0.0001 Then
            e.text = "0.00%"
        Else
            e.Text = ia3 * 100 & "%"
        End If

 

End If

End If


 下面是想要的效果


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

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/5/30 12:24:00 [只看该作者]

不仅仅是计算2016年的,当2017年/2018年下面有值时,依然计算其他年份的达成率~~

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


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

Select Case e.Col.name
    Case "1月", "2月"
        If e.Row("项目") = "达成率" Then
            Dim ia1 As Double
            Dim ia2 As Double
            Dim ia3 As  Double
           
            ia1 = DataTables("开模总分析").Compute("sum(" & e.Col.name & ")","项目 = '量产模' and 年份 = '" & e.Row("年份") & "'")
            ia2 = DataTables("开模总分析").Compute("sum(" & e.Col.name & ")","项目 = '目标' and 年份 = '" & e.Row("年份") & "'")
            ia3 = round2(ia1/ia2,4)
           
            If ia2 < 0.0001 Then
                e.text = "0.00%"
            Else
                e.Text = ia3 * 100 & "%"
            End If
        End If
End Select

 


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/5/31 9:08:00 [只看该作者]

红袍老师,试了,没成功;是不是与我开发的版本有关,目前使用版本是2015年12月的版本,之前我也用Compute都行的,这次也报错,后来我用FINDROW,
图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

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


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

 呃,2楼代码,不应该报错的。做个例子发上来看看。

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/5/31 10:19:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:总分析表属性绘制单元格.foxdb


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

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/5/31 10:19:00 [只看该作者]

上传了附件,我也觉得好奇怪,怎么会报错~~

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/5/31 10:20:00 [只看该作者]

代码写在表属性,绘制单元格内了~~

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


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

哦,你列名有问题,列名尽量不要用数字开头。代码改一改

 

Select Case e.Col.name
    Case "1月", "2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","TOTAL"
        If e.Row("项目") = "达成率" Then
            Dim ia1 As Double
            Dim ia2 As Double
            Dim ia3 As  Double
            ia1 = DataTables("总分析").Compute("sum([" & e.Col.name & "])","项目 = '量产模' and 年份 = '" & e.Row("年份") & "'")
            ia2 = DataTables("总分析").Compute("sum([" & e.Col.name & "])","项目 = '目标' and 年份 = '" & e.Row("年份") & "'")
            ia3 = round2(ia1/ia2,4)
           
            If ia2 < 0.0001 Then
                e.text = "0.00%"
            Else
                e.Text = ia3 * 100 & "%"
            End If
        End If
End Select

 

 


 回到顶部