反馈已提交

网络繁忙

计算操作符说明

  • 文档创建者:文档助手1
  • 历史版本:20
  • 最近更新:Catqiu 于 2023-12-12
  • 1. 概述

    FineReport 中使用函数需要用到很多的操作符,操作符不仅包含很多运算符,还包括一些报表特有的操作符。

    FineReport 11.0 优化了公式

    1.1 视频教程

    2. 运算符类型

    运算符用于指定要对公式中的元素执行的计算类型。有默认计算顺序,但可以使用括号更改此顺序。

    FineReport 中有四种不同类型的计算运算符:算术、比较、逻辑、连接。

    2.1 算数运算符

    执行基本的数学运算,如加、减、乘、除等,在公式中使用以下算术运算符:

    算数运算符
    说明操作对象示例
    +加号 数或单元格  2+3
    -减号数或单元格 A1-B1  
    *乘号数或单元格A1*2  
     / 除号数或单元格A3/3  
    %取余,求余数。除数需要为整数数或单元格5%2为1  
    ^乘方数或单元格
    3 ^ 2=9

    2.2 比较运算符

    可以使用下列运算符比较两个值。使用这些运算符比较两个值时,结果为逻辑值 TRUE 或 FALSE。

    比较运算符说明操作对象示例
    ==等于  数或变量  A==2  
    !=不等于 数或变量 A!=null   即 A 不为空值
    >大于 数或变量或单元格 3>2 
    <小于 数或变量或单元格 A1<2 
    >= 大于等于 数或变量或单元格 A1>=2 
    <= 小于等于 数或变量或单元格 A1<=2 

    2.3 逻辑运算符

    逻辑运算符用法与 AND 和 OR 同理。

    逻辑运算符说明操作对象示例
    &&条件与,需要两个操作数的值都是 true 时,才取值true条件

    销售额>=10&&销售人数>=2

    即如果销售额和销售人数同时满足指定条件则返回 true

    ||条件或,只要两个操作数中有一个是 true 取值就为 true条件

    销售额>=10||销售人数>=2

    即如果销售额和销售人数满足任一指定条件则返回 true

    !取非,即取条件的反面  条件!A,如果 A 是 true,!A 是 false  

    2.4 连接运算符

    可以使用 + 运算符对文本字符进行合并。

    例如:将文本字段「abc」和「def」拼接在一起,当然可以使用 CONCATENATE,但更简单的方案是直接使用「+」,如下图所示:

    3. 其他操作符

    操作符
    说明操作对象示例
    :用于取一段连续范围的单元格 单元格 如 A1:B3 即取 A1 到 B3 这个单元格集合 
    &取单元格所在行列  单元格

    &A2

    获取单元格 A2 扩展出来的每个数据的位置

    . 引用对象或方法对象或方法 

    ds1.select(销售员)

    数据集 ds1 取出内置 FRDemo 数据库中的「销量」表,返回数据集 ds1 销售员列中的所有值。

    详细使用请参见:数据集函数 

    $参数引用符或绝对定位 参数或绝对定位 

    层次坐标专用,详情参见:条件汇总

    列序号 列 

    ds1.select(#1)

    即取数据集第一列数据(注:数据表中的第一列而不是放在报表单元格第一列。

    ${}宏定义 参数 

    如在 SQL 中 SELECT * FROM 销量 ${"where 地区='华东'"},会先计算出 ${} 里面的值,然后拼接出完整的SQL 语句

    该示例 sql 其实就是 SELECT * FROM 销量 where 地区='华东'

    其他宏定义可参考:计算格式 3.2.1 节

    Cell[]层次坐标操作符 单元格 

    A2[A1:-1]

    详情参见:层次坐标概念 

    $$$表示当前单元格的值即当前值 有数据的单元格 

    if($$$=0,"",$$$)

     表示如果当前值为 0 则显示空,否则显示为当前值 

    2.png

    \\ 引用“\”,值即为\ 单元格 如 \" 表示引用 " 号 
    \n 换行符 字符串 如字符串 aabb,希望 bb 换行显示,则填写 aa\nbb 
     [,] 定义数组数组

    例如:=indexofarray(["a","b","c","d"],3)

    获取数组中第三个位置的数据即返回值为 c

    详情参见:数组函数概述

    ""定义字符串字符串
    ()优先计算单元格
    ^乘方单元格/数组
    ~决策报表跨组件引用单元格详情参见:决策报表数据源
    !跨sheet引用单元格
    详情参见:图表跨sheet引用单元格数据
    {}过滤单元格/列详情参见:条件计数
    {单元格}获取当前页单元格数据
    单元格

    例如 {A2}

    COUNT({A2}),则表示计算当前页数据行数:

    4. 公式运算的次序

    在某些情况下,执行计算的顺序可能会影响公式的返回值,因此,必须了解如何确定顺序以及如何更改顺序以获取所需结果。

    4.1 运算符优先级

    如果一个公式中有若干个运算符,FineBI 将按下表中的次序进行计算。 如果一个公式中的若干个运算符具有相同的优先顺序(例如,如果一个公式中既有乘号又有除号),则 FineBI 将按照以下方向计算各运算符。

    优先级运算符含义使用形式结合方向
    1

    -

    负号

    -表达式

    右到左

    2^乘方表达式^表达式

    左到右

    3*表达式*表达式
    /表达式/表达式
    %取余表达式%表达式
    4+表达式+表达式
    -表达式-表达式
    5>大于表达式>表达式
    <小于表达式<表达式
    >=大于等于表达式>=表达式
    <=小于等于表达式>=表达式
    6=、==等于

    表达式=表达式

    表达式==表达式

    !=不等于表达式!=表达式
    7&&逻辑与表达式&&表达式
    8||逻辑或表达式||表达式

    3.2 使用括号计算方式

    若要更改计算的顺序,需要将公式中要先计算的部分用括号括起来。 

    例如,下面的公式生成 11,因为在加法之前计算乘法。 该公式先将 2 与 3 相乘,然后再将 1、4 与结果相加。

    =1+2*3+4

    但是,如果用括号对该语法进行更改,则会先将 1 与 2 相加在一起,然后再用结果乘以 3 ,再加上 4 得到 13。

    =(1+2)*3+4





    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持