表达式中引用单元格

表达式的一个重要作用就是在报表中引用单元格,通过各种引用单元格方式实现复杂的报表功能。

如果需要在报表的单元格中使用表达式,只需要将输入的字符以=开头即可,这样引擎就会认为=号后面的部分是表达式,会当成表达式来进行计算,可以双击单元格实现内容输入,也可以选中单元格,在报表顶部的编辑栏里输入内容,如果输入内容以=开头,可以看到编辑栏边上的fx按钮就会变的可用,点击该按钮会弹出表达式编辑窗口,可以对表达式作进一步编辑,如下图所示:

image-20211126111412369

占击fx按钮后,系统会弹出表达式编辑窗口,如下图:

image-20211126111517609

窗口上部是具体表达式编辑区域,下部是可用函数列表,对于输入的表达式还可以使用语法检查按钮检验表达式语法是否正确。

直接使用单元格名称

直接在表达式中输入单元格名称就可以实现对单元格值的引用,如下面的报表模版:

image-20211126110155587

在这个报表模版当中,D1单元格通过以=开头,输入一个表达式C1,表示要在D1单元中引用C1单元格的值,运行后的效果如下图:

image-20211126110314066

在表达式中要直接使用单元格名称,那么直接输入这个单元格名称即可;表达式在计算时,会根据当前表达式所在单元格位置来计算目标单元格值。

单元格在引用时,名称的字母部分要用大写字母表示,不能使用小写字母。

单元格名称在使用时,可以通过标准的运算符号参与计算,比如将上图中D1单元格的值由C1改为C1*2,返回的结果就变成下面的样子:

image-20211126110832423

单元格条件过滤

2.0.2版本开始,BaskReport中引用单元格时,可以在单元格名称后面添加过滤条件,以实现只获取符合条件的目标单元格数据,格式如下:

单元格名称{条件...}

如:

D1{D1>5000 && (B1=="大专" || B1=="本科"))}

在上面的表达式中,要获取的是D1单元格,条件是D1单元格的值必须大于5000,同时对于每个要获取的D1单元格相对的B1单元格的值要么是大专要么是本科

在获取到符合条件的目标单元格后,我们就可以在外面套上sum或count之类的统计函数,只计算这些符合条件的单元格。

如:

sum(D1{D1>5000 && (B1=="大专" || B1=="本科"))})

表示只对符合条件的D1单元格数据进行求和

引用单元格的其它符号

在实现报表功能的时候,除了需要引用具体单元格的值以外,还可能需要根据当前表达式所在单元格位置引用目标单元格的展开序号,目标单元格展开后的所有值,当前表达式所在单元格的值等,这些符号如下表所示:

符号 描述
& 表示要根据当前表达式所在单元格位置取目标单元格展开后的序号(序号从1开始)。如&A1
$ 根据当前表达式所在单元格位置引用目标单元格的展开后的值,如$A1,表示根据当前表达式所在单元格位置引用目标单元格A1的展开后的值。一般用在条件过滤中,参考:同比范例
[] 取引用的单元格展开后的所有值,如A1[],表示不考虑当前表达式所在单元格位置取所有A1单元格的值,这个功能在后面的单元格坐标一节中有详细介绍。
# 取当前表达式所在单元格的值,通常在链接中会使用到。
{} 取当前页中指定名称的所有单元格,如{A1},表示取当前页中所有A1单元格。

results matching ""

    No results matching ""