Foxtable(狐表)用户栏目专家坐堂 → 请教:Excel报表中的总计代码


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

主题:请教:Excel报表中的总计代码

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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
请教:Excel报表中的总计代码  发帖心情 Post By:2009/4/27 20:25:00 [只看该作者]

这是我的代码,意思是在表格的最后一行,逐列求和,请教,红色行错在何处?

For c As Integer = 5 To dt.Cols.Count -2 '
    Sheet(r1+1, c).Value = dt.Compute("Sum("& c &")")

    Sheet(r1+1, c).Style= Style
Next

 


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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/4/27 21:29:00 [只看该作者]

以下是引用yangming在2009-4-27 20:25:00的发言:

这是我的代码,意思是在表格的最后一行,逐列求和,请教,红色行错在何处?

For c As Integer = 5 To dt.Cols.Count -2 '
    Sheet(r1+1, c).Value = dt.Compute("Sum("& c &")")

    Sheet(r1+1, c).Style= Style
Next

 

dt.Compute("Sum("& c &")")这个不对吧....c只是整数变量,而不是某列列名....

我的代码..
rt.Cells(tbl.Rows.Count,9).Text = tbl.compute("SUM(金额)","[床位] = '" & Region & "'")

你的代码可能应该是这样.

For c As Integer = 5 To dt.Cols.Count -2 '
    Sheet(r1+1, c).Value = dt.Compute("Sum(dt.Cols(c).Name)")

    Sheet(r1+1, c).Style= Style
Next

 


 

[此贴子已经被作者于2009-4-27 21:43:14编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/27 21:44:00 [只看该作者]

你的方法我试过的,还是出错,不过还是要谢谢你啊

[此贴子已经被作者于2009-4-27 21:47:52编辑过]

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/4/27 21:47:00 [只看该作者]

这个不行吗?EXCEL报表我没怎么研究.....但是SUM这个括号里的内容应该是出错的原因..
For c As Integer = 5 To dt.Cols.Count -2 '
    Sheet(r1+1, c).Value = dt.Compute("Sum(dt.Cols(c).Name)")

    Sheet(r1+1, c).Style= Style
Next

Compute

根据条件统计表中数据。

语法:

Compute(Expression, Filter)

Expression: 要计算的表达式
Filter:    可选参数,用于设置计算条件


计算产品PD01的销售数量:

Dim Total As Long
Total =
DataTables("订单").Compute("Sum(数量)", "产品 = 'PD01'"
)
Output.Show(Total)


-------------------------------------------------------------------------------

通过Name属性和Index属性,我们可以获得指定名称列的位置,也可以获得指定位置列的名称:

例如:

Output.Show("金额列的位置是:" & Tables("订单").Cols("金额").Index)
Output.Show(
"第三列的名称是:" & Tables("订单").Cols(2).Name)

[此贴子已经被作者于2009-4-27 21:55:55编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/27 22:33:00 [只看该作者]

如果只是计算一个数量列,而又没有条件,就用:Total = DataTables("订单").Compute("Sum(数量)"),我是要逐列求和,就不明白如何做了

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


加好友 发短信
等级:幼狐 帖子:130 积分:874 威望:0 精华:0 注册:2008/8/31 21:32:00
  发帖心情 Post By:2009/4/28 0:11:00 [只看该作者]

试试

Sheet(r1+1, c).Value = dt.Compute("Sum(" & Tables("表名").Cols(c).Name & ")")

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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/28 0:39:00 [只看该作者]

谢谢ybtxdz,我不明白,这里为何要加表名呢?

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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/28 1:05:00 [只看该作者]

谢谢ybtxdz,我只是不明白,这里为何要加入表名呢?

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


加好友 发短信
等级:幼狐 帖子:130 积分:874 威望:0 精华:0 注册:2008/8/31 21:32:00
  发帖心情 Post By:2009/4/28 1:29:00 [只看该作者]

首先Sum聚合函数的计算需要给出列的名称

你定义的的dt 可能是DataTable,  目前狐表DataTable不直接支持由列的编号得到列的名称

而通过Table 的Cols 可以由列的编号得到列的名称.  用Tables的时候当然就要指定表名.  如果是对当前表进行统计,  你还可以用CurrentTable,  就省了表名.

Sheet(r1+1, c).Value = dt.Compute("Sum(" & CurrentTable.Cols(c).Name & ")")


 回到顶部
美女呀,离线,留言给我吧!
yangming
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/4/28 15:15:00 [只看该作者]

明白了,呵呵,看来还是没搞清楚DataTable和Table 的区别,再次感谢!

 回到顶部