找文章 / 找答案
  • 发帖数1
  • 粉丝1

此人很懒,什么也没有留下

  • 解答问题超厉害

    经常帮助其他会员答疑
    精选问答 更多内容

    [技术功能] 隔间计算

    liyuqing817新手上路 显示全部楼层 发表于 2021-5-20 16:38:40 |阅读模式 打印 上一主题 下一主题
    隔间计算如何计算
    回复

    使用道具 举报

    精彩评论1

    永洪tech-zyc铂金四 显示全部楼层 发表于 2021-5-20 16:43:08
    • row 表示当前行

    eg:通过row来实现显示自由式表格的行号,行列数均是从0开始



    • column表示当前列

    eg:通过column来实现显示自由式表格的列号,行列数均是从0开始



    • cell(int row,int column) int row表示行号,int column表示列号,可以通过这种方式引用其他格子。int row和int column可以换成具体的整数,比如0,1,2,3...,也可以用相对位置,比如row表示当前行,row-1表示当前行往前一行,column+1,表示当前列往后一列

    eg:最简单的引用,单元格(0,0)绑定销量字段,单元格(0,1)不绑定字段,直接引用单元格(0,0)的值。采用绝对行列引用,以及相对行列引用都是可以的,具体见下图:



    备注:绝对引用和相对引用各有优点,绝对引用:要引用的格子行列固定,行和列相应的数就行,不容易出错;相对引用:灵活,适合于有扩展的情况,字段进行横向扩展和纵向扩展,根据数据的不同,行列是不固定的。ps:这里的行列是查看数据的时候来数的行列,并不是元数据模式的行列,是展开后的。
    • rsize表示总行数,常用于自由式表格计算行合计(rowTotal)




    • csize表示总列数,常用于自由式表格计算列合计(colTotal)




    • rowTotal表示行合计,计算第i行到第j行的行合计

    rowTotal(int column, int rstart,int rend) //int column计算行合计所在的列,int rstart表示开始行i,int rend表示结束行j
    eg:自由式表格简单合计

    具体的实现方式,还是分两种,绝对引用和相对引用。
    • 绝对引用,rowTotal(1,1,4),看着简单明了,但是不适用于数据变化的情况,比如这里的产品种类,不一定固定是4个,如果个数发生变化,这里合计的值就是有问题的,所以更好的方式是用行对引用方式。


    2.相对引用,也就用到了上面的column,rsize等,当这里产品种类个数变化,咱们计算的合计也是正确的。

    • colTotal表示列合计,计算指定行,第i列到第j列的列合计

    colTotal(int row, int cstart,int cend) //int row表示计算列合计所在的行;int cstart表示起始列i,int cend表示结束列j
    eg:简单的列合计

    由于这里既有横向扩展(市场级别)和纵向扩展(产品种类),已经不能用绝对引用的方式了,因为这里是动态变化的。实现方式如下:

    • up/down/left/right

    函数
    语法
    说明
    up
    up(int num)
    引用格子方式,表示当前单元格上方第num个单元格,num是大于0的整数。eg:up(1),当前单元格上方第一个单元格
    down

    down(int num)
    引用格子方式,表示当前单元格下方第num个单元格,num是大于0的整数。eg:down(1),当前单元格下方第一个单元格
    left
    left(int num)
    引用格子方式,表示当前单元格左侧第num个单元格,num是大于0的整数。eg:left(1),当前单元格左侧第一个单元格
    right

    right(int num)
    引用格子方式,表示当前单元格右侧第num个单元格,num是大于0的整数。eg:right(1),当前单元格右侧第一个单元格

    eg:left(1)效果如下,其他也是类似

    写在最后,上面依次介绍了隔间计算最简单的格子引用的方式,在这个基础上咱们就可以在一个格子中实现引用多个格子,做计算了。
    eg:占比计算



    注意:如果涉及到做除法,一定要判断分母不为0;引用单元格的前提是该单元格存在,如果引用了不存在的单元格,会报错,引用前最好是判断一下,比如在调用column-5这样的格子前,必须先判断下,if(column>5){cell(row,coloum-5)};在以前的版本中,是没有row和column,使用ridx和cidx代替,其他使用方式一致。


    回复 支持 反对

    使用道具 举报

    高级模式
    您需要登录后才可以回帖 登录 | 免费注册

    • 官方微信

      欢迎关注永洪服务号!收费为0,价值无限

      扫码关注
    • 新浪微博

      让每位用户轻松挖掘数据价值!

      访问新浪微博
    • 智能客服
    50W

    会员等你来哦

    Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
    返回顶部