以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]汇总行单价的计算问题,请教高手! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3977) |
||||
-- 作者:smartem -- 发布时间:2009/8/21 12:04:00 -- [求助]汇总行单价的计算问题,请教高手! 如图所示的汇总,在汇总行需要显示单价,有解决的方法吗? ![]() ![]() 下图所示的金额及数量都是用的累计值,但单价用累计值显然是不正确确的 ![]() ![]() 在Excel中的情况: ![]() ![]() 测试Table
[此贴子已经被作者于2009-8-21 12:04:52编辑过]
|
||||
-- 作者:smartem -- 发布时间:2009/8/21 12:20:00 -- 我尝试用Excel报表来实现汇总,结果发现Excel报表的汇总行(分组尾)也不能实现同一行数据间的计算。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/8/21 12:43:00 -- 我不明白,单价不同,显示那个好? 你可以看看开发篇中的Excel报表,里头提供了方法,可以向任意单元格写入值 |
||||
-- 作者:yangming -- 发布时间:2009/8/21 12:49:00 -- 加一个平均值的行 t.SubtotalGroups.Clear() g = New SubtotalGroup g = New SubtotalGroup t.Subtotal() |
||||
-- 作者:mr725 -- 发布时间:2009/8/21 12:51:00 -- 以下是引用狐狸爸爸在2009-8-21 12:43:00的发言: 汇总行的单价,应该等于 汇总行的金额 ÷ 汇总行的数量 很多情况下都是这样的。 所以设置汇总时应该有一个是否计算汇总行的平均单价选项~
我不明白,单价不同,显示那个好? |
||||
-- 作者:smartem -- 发布时间:2009/8/21 13:17:00 -- 直接取平均值是不对的。 直接取平均值是不对的,因为每一次的数量并不一样,即“权重”不一样。应该是加权平均值。 我的想法是,新增一列,专用于贮存其对总的单价的“贡献”,公式为“ [金额] / Sum([数量]) ”,汇总时只需要对此列直接取累计值就可以了。 这样会带来两个新的问题: 1是格式不好看;2是当需要多组分组时,就需要对应设置多个“贡献列”来存贮其在各自分组中的贡献度。 ![]() ![]() [此贴子已经被作者于2009-8-21 13:28:18编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2009/8/21 13:19:00 -- 以下是引用yangming在2009-8-21 12:49:00的发言:
加一个平均值的行 只是生成的汇总表不够简洁,多了一行专门对单价的汇总行了···· ,呵呵~ 但生成excel报表时应该何以并到汇总行里吧?~ |
||||
-- 作者:mr725 -- 发布时间:2009/8/21 13:25:00 -- 以下是引用smartem在2009-8-21 13:17:00的发言:
直接取平均值是不对的,因为每一次的数量并不一样,即“权重”不一样。应该是加权平均值。 我的想法是,新增一列,专用于贮存其对总的单价的“贡献”,公式为“ 金额 / SUM(数量)”,汇总时只需要对此列直接取累计值就可以了。 甩开系统给的汇总模式吧,全部直接用代码自己做好了~ |
||||
-- 作者:yangming -- 发布时间:2009/8/21 13:33:00 -- 这样,只是做一个汇总行 Dim r As Row = CurrentTable.Rows.AddNew() r("产品")="总计" r("数量")=CurrentTable.Compute("Sum(数量)") r("单价") =CurrentTable.Compute("Sum(单价)")/CurrentTable.Compute("Count(单价)") MessageBox.Show(CurrentTable.Compute("Count(单价)")) |
||||
-- 作者:smileboy -- 发布时间:2009/8/21 13:39:00 -- 以下是引用yangming在2009-8-21 13:33:00的发言:
这样,只是做一个汇总行 Dim r As Row = CurrentTable.Rows.AddNew() r("产品")="总计" r("数量")=CurrentTable.Compute("Sum(数量)") r("单价") =CurrentTable.Compute("Sum(单价)")/CurrentTable.Compute("Count(单价)") MessageBox.Show(CurrentTable.Compute("Count(单价)")) 不是这么简单的 |