找文章 / 找答案
精选问答 更多内容

[可视化] 自由表格间计算使用

寻找新技能 显示全部楼层 发表于 2021-4-1 14:00:07 |阅读模式 打印 上一主题 下一主题
  • 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:自由式表格简单合计
具体的实现方式,还是分两种,绝对引用和相对引用。
  1. 绝对引用,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号 |《永洪社区协议》
返回顶部