永洪社区

标题: 自由表格间计算使用 [打印本页]

作者: 寻找新技能    时间: 2021-4-1 14:00
标题: 自由表格间计算使用
eg:通过row来实现显示自由式表格的行号,行列数均是从0开始
eg:通过column来实现显示自由式表格的列号,行列数均是从0开始
eg:最简单的引用,单元格(0,0)绑定销量字段,单元格(0,1)不绑定字段,直接引用单元格(0,0)的值。采用绝对行列引用,以及相对行列引用都是可以的,具体见下图:
备注:绝对引用和相对引用各有优点,绝对引用:要引用的格子行列固定,行和列相应的数就行,不容易出错;相对引用:灵活,适合于有扩展的情况,字段进行横向扩展和纵向扩展,根据数据的不同,行列是不固定的。ps:这里的行列是查看数据的时候来数的行列,并不是元数据模式的行列,是展开后的。
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(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代替,其他使用方式一致。






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