Foxtable(狐表)用户栏目专家坐堂 → [求助]关于环比问题


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

主题:[求助]关于环比问题

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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
[求助]关于环比问题  发帖心情 Post By:2022/5/14 12:21:00 [只看该作者]

请教一下老师,像这种日期是列维度的 环比要怎么加?就像份额那样子显示,在每个日期后面加入比如前一日的日环比。

图片点击可在新窗口打开查看
[此贴子已经被作者于2022/5/14 12:54:49编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111391 积分:567019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/14 13:33:00 [只看该作者]

添加一个表达式列,表达式:IIF([当天销售额_2022-5-1] is null,1,[当天销售额_2022-5-2] / [当天销售额_2022-5-1])

然后把这个列列属性数值格式设置为百分比,在移到[当天销售额_2022-5-1]列后面

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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
  发帖心情 Post By:2022/5/14 14:40:00 [只看该作者]

非常感谢版主回复我的帖子

我这个表格是用交叉统计生成的查询表,是否可以写一段代码在生成查询的时候就在每日的销售数据后面显示这个环比

目前的查询代码是自动生成的,如下

Dim g As New CrossTableBuilder("每日销售统计", DataTables("浙江_日明细"))
g.HGroups.AddDef("团长ID")
g.VGroups.AddDef("日期", DateGroupEnum.None)
g.Totals.AddDef("当天销售件数", "当天销售件数")
g.Totals.AddDef("当天销售额", "当天销售额")
g.OrderByTotal = True
g.HorizontalTotal = True
g.VerticalTotal = True
g.Build()
MainTable = Tables("每日销售统计")


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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
  发帖心情 Post By:2022/5/14 14:42:00 [只看该作者]

想要达到的效果如下
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20220514144109.png
图片点击可在新窗口打开查看




 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111391 积分:567019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/14 16:39:00 [只看该作者]

生成后使用代码处理

比如
Dim dc As DataCol 
Dim lst As New List(Of String)
Dim t As Table = Tables("每日销售统计")
t.StopRedraw
Dim cnt As Integer = t.cols.Count
For i As Integer = t.cols.Count - 1 To 2 Step - 1
    Dim s As String = t.cols(i).Name & " 环比"
    lst.Add(s)
    dc = DataTables("每日销售统计").datacols.add(s, GetType(Double), "IIf(" & t.cols(i - 1).Name & " Is null, 1, " & t.cols(i).Name & " / " & t.cols(i - 1).Name & ")", t.cols(i).Caption & " 环比")
    dc.SetFormat("00.0%")
Next

For Each s As String In lst
    t.cols(s).Move(t.cols(s.Split(" ")(0)).Index + 1)
Next
t.AutoSizeCols
t.ResumeRedraw


[此贴子已经被作者于2022/5/14 16:39:21编辑过]

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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
  发帖心情 Post By:2022/5/15 0:06:00 [只看该作者]

版主老师,这个日环比的计算公式好像是错的呀,应该是 (B-A)/A 这样子的计算逻辑

环比增长率=(本期数-上期数)/上期数×100%

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111391 积分:567019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/15 20:11:00 [只看该作者]

上面提供的是思路,逻辑一样的,改为自己的计算公式即可

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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
  发帖心情 Post By:2022/5/16 12:34:00 [只看该作者]

非常感谢版主老师,问题得到初步的解决,由于增加了几列和计算逻辑变动,便于后续的新人梳理思路

具体代码内容如下:

Dim dc As DataCol 
Dim lst As New List(Of String)
Dim t As Table = Tables("每日销售统计")
t.StopRedraw
Dim cnt As Integer = t.cols.Count
For i As Integer = t.cols.Count - 1 To 6 Step - 1
    Dim s As String = t.cols(i).Name & " 环比"
    lst.Add(s)
    dc = DataTables("每日销售统计").datacols.add(s, GetType(Double), "IIf(" & t.cols(i - 1).Name & " Is null, 1, (" & t.cols(i).Name & " - " & t.cols(i - 1).Name & ") / " & t.cols(i - 1).Name & ")", t.cols(i).Caption & " 环比")
    dc.SetFormat("0.00%")
Next

For Each s As String In lst
    t.cols(s).Move(t.cols(s.Split(" ")(0)).Index + 1)
Next
t.AutoSizeCols
t.ResumeRedraw

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


加好友 发短信
等级:婴狐 帖子:8 积分:111 威望:0 精华:0 注册:2022/5/2 18:28:00
  发帖心情 Post By:2022/5/16 14:19:00 [只看该作者]

老师再请教一下,我这个交叉表格用代码处理完之后导出来的excel表格 环比数据是小数点,怎么才能让这个表格导出来的环比数据直接是百分比的数据形式?谢谢。

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111391 积分:567019 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/16 14:34:00 [只看该作者]

怎么导的?

 回到顶部
总数 13 1 2 下一页