永洪社区

标题: 隔间计算 [打印本页]

作者: liyuqing817    时间: 2021-5-20 16:38
标题: 隔间计算
隔间计算如何计算

作者: 永洪tech-zyc    时间: 2021-5-20 16:43
  • 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代替,其他使用方式一致。







欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4