永洪社区
标题: 自由表格间计算使用 [打印本页]
作者: 寻找新技能 时间: 2021-4-1 14:00
标题: 自由表格间计算使用
eg:通过row来实现显示自由式表格的行号,行列数均是从0开始
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 | 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 |