Foxtable(狐表)用户栏目专家坐堂 → [求助]汇总行单价的计算问题,请教高手!


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

主题:[求助]汇总行单价的计算问题,请教高手!

帅哥哟,离线,有人找我吗?
smartem
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:23 积分:338 威望:0 精华:0 注册:2008/11/15 8:21:00
[求助]汇总行单价的计算问题,请教高手!  发帖心情 Post By:2009/8/21 12:04:00 [显示全部帖子]

如图所示的汇总,在汇总行需要显示单价,有解决的方法吗?

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

下图所示的金额及数量都是用的累计值,但单价用累计值显然是不正确确的

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

在Excel中的情况:

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

测试Table
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汇总的问题.rar

[此贴子已经被作者于2009-8-21 12:04:52编辑过]

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


加好友 发短信
等级:婴狐 帖子:23 积分:338 威望:0 精华:0 注册:2008/11/15 8:21:00
  发帖心情 Post By:2009/8/21 12:20:00 [显示全部帖子]

我尝试用Excel报表来实现汇总,结果发现Excel报表的汇总行(分组尾)也不能实现同一行数据间的计算。

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


加好友 发短信
等级:婴狐 帖子:23 积分:338 威望:0 精华:0 注册:2008/11/15 8:21:00
直接取平均值是不对的。  发帖心情 Post By:2009/8/21 13:17:00 [显示全部帖子]

直接取平均值是不对的,因为每一次的数量并不一样,即“权重”不一样。应该是加权平均值。
我的想法是,新增一列,专用于贮存其对总的单价的“贡献”,公式为“ [金额] / Sum([数量]) ”,汇总时只需要对此列直接取累计值就可以了。
    这样会带来两个新的问题: 1是格式不好看;2是当需要多组分组时,就需要对应设置多个“贡献列”来存贮其在各自分组中的贡献度。

图片点击可在新窗口打开查看此主题相关图片如下:04.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-8-21 13:28:18编辑过]

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


加好友 发短信
等级:婴狐 帖子:23 积分:338 威望:0 精华:0 注册:2008/11/15 8:21:00
  发帖心情 Post By:2009/8/21 15:17:00 [显示全部帖子]

CurrentTable.Sort = "产品"                 '排序
Dim r1 As Row
Dim r2 As Row
Dim g1 As String
Dim g2 As String
For i As Integer = 0 to CurrentTable.Rows.Count-1
    CurrentTable.Position = i
    r1 = CurrentTable.Rows(i)
    r2 = CurrentTable.Rows(i+1) 
    g1 = r1("产品")
    g2 = r2("产品")
    If g1 <> g2 Then               '当前后行"产品"不同时
        Dim dr As Row = CurrentTable.AddNew() '添加一小计行
        dr("产品") = g1 & " 小计"
        dr("数量") = DataTables("库存").Compute("Sum(数量)","[产品] = '"& g1 &"'")
        dr("单价") = DataTables("库存").Compute("Sum(金额)","[产品] = '"& g1 &"'") / dr("数量")
        CurrentTable.Position = i
    End If
Next
CurrentTable.Sort = "产品"
'加上总计
Dim ds As Row = CurrentTable.AddNew()
ds("产品") =  "总计"
ds("数量") = DataTables("库存").Compute("Sum(数量)")
ds("单价") = DataTables("库存").Compute("Sum(金额)") / ds("数量")
[此贴子已经被作者于2009-8-21 15:27:23编辑过]

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


加好友 发短信
等级:婴狐 帖子:23 积分:338 威望:0 精华:0 注册:2008/11/15 8:21:00
  发帖心情 Post By:2009/8/21 20:55:00 [显示全部帖子]

找不到其它更好的方法,先这样用吧。 我首尾加上了CurrentTable.Redraw = False、CurrentTable.Redraw = True 测试加载1万行数据,大概4s可以跑玩,速度应该可以接受吧。

 回到顶部