finereport 帆软学习笔记--已解决的问题

finereport 版本:8.0

系统环境:win 10

一.权限控制

需求:不同用户显示不同内容的报表。

解决方案

  1. 在嵌套iframe的页面里,给src路径属性后面加上用户信息参数,例如:?username=123

在帆软设计器里通$username取得参数值,可以通过单元格过滤的方式控制显示不同内容的报表,也可通过sql的方式控制展示不同的报表。例如:

${if(username == 'yg',"select * from T_XTTS_USERINFO where 1=1"," select * from t_xtts_userinfo where username='wyf'")}

If()函数解释:If(param1,param2,param3)函数,param1为bool类型,param2,param3为String类型,如果param1为true则表达式的值为param2,否则表达式的值为param3

二.给报表加上序列号

需求:给报表的第一列加上序号

解决方案

  1. 给第一列单元格添加公式:=seq(),且该单元格的左父格设置为该单元右边的单元格
  2. 也可以在数据库结果集多查询一列序号,例如select rownum as 序号 …

三.动态修改表头title

需求

finereport 帆软学习笔记--已解决的问题_第1张图片

表格title根据当前时间显示当前年份

解决方案:给该单元格添加公式:=year(today())+”xxx报表

四.翻页按钮放在底部

需求:帆软的报表默认翻页按钮工具栏在报表上面,将其调到报表下面

解决方案:

finereport 帆软学习笔记--已解决的问题_第2张图片

finereport 帆软学习笔记--已解决的问题_第3张图片

选中需要的按钮点击向下的绿色箭头即可把对应的按钮放在底部。

五.报表自适应

需求:帆软设计器新建的工作簿里的报表无法自适应

解决方案:表单是可以自适应的,所以可以通过新建表单,然后在表单里添加报表模块。

finereport 帆软学习笔记--已解决的问题_第4张图片

新建完成后右边属性栏里可以看到能设置自适应的选项

finereport 帆软学习笔记--已解决的问题_第5张图片

 

六.带查询条件的报表加载不显示数据

需求:一般添加了查询按钮的报表,页面默认加载时不显示数据,要点击查询后才会显示数据

解决方案:双击参数面板空白处,右侧会出现如下信息,将点击查询前不显示报表内容勾选去掉即可

finereport 帆软学习笔记--已解决的问题_第6张图片

 

七.查询问题

需求:通过单元格过滤的方式进行查询,不符合条件的会显示空白格,如下图:

finereport 帆软学习笔记--已解决的问题_第7张图片

解决方案:

将单元格过滤条件都写在第一查询列上。

finereport 帆软学习笔记--已解决的问题_第8张图片

 

八.超链接传参

需求:报表添加超链接,指向web项目的链接,并传参过去。

解决方案:

finereport 帆软学习笔记--已解决的问题_第9张图片

右键单元格,选择超链接,出现如下对话框,增加一个JavaScript

finereport 帆软学习笔记--已解决的问题_第10张图片

Javascript代码:var filter = "&type="+type+"&name="+name;

window.open("http://localhost:9000/xtts/bpm/attendance/index.jsp?queryType=fr"+filter,"_blank");

九.表单里的表格添加翻页工具类

需求:在表单里添加的报表模块,默认是没有翻页工具栏的。

解决方案:在表单新建完成后,拖入一个报表模块到表单里,此时右侧会出现:

finereport 帆软学习笔记--已解决的问题_第11张图片

点击,出现对话框,勾选使用工具栏即可。

finereport 帆软学习笔记--已解决的问题_第12张图片

十.帆软弹出框修改样式

需求:帆软弹出框默认是蓝色的。如何修改成别的颜色

解决方案:http://help.finereport.com/doc-view-2270.html

 

附件

一.常用函数

1.SUM

SUM(number1,number2,…):求一个指定单元格区域中所有数字之和。

Number1,number2,…:1到30个参数或指定单元格区域中所有数字。

备注:

函数将直接键入参数中的数值、逻辑值及文本表达式计算在内。

若参数是数组或引用,则只对数组或单元格引用的数值进行计算。

示例:

SUM(70,80)等于150。

SUM("70",80,TRUE)等于151,逻辑值"TRUE"作为1来计算;"FALSE"作为0计算;文本"70"作为70来计算。

2.COUNT

COUNT(value1,value2,…):计算数组或数据区域中所含数字项的个数。

Value1,value2,…:可包含任何类型数据的参数,但此函数只将数字类型的数据计算在内。

备注:

数字、日期或以文字代表的数字参数将被计算在内;但无法转换成数字的错误值或文本值参数将忽略不计。

如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

3.AVERAGE

AVERAGE(number1,number2,…):返回指定数据的平均值。

Number1,number2…:用于计算平均值的参数。

备注:

参数必须是数字,或是含有数字的名称,数组或引用。

如果数组或引用参数中含有文字,逻辑值,或空白单元格,这些值将被忽略;但是,单元格中的零值则参与计算。

示例:

如果A1:A6被命名为“ages”,分别等于10,23,14,24,33及25,则:

AVERAGE(A1:A6)等于21.5。

AVERAGE(ages)等于21.5。

如果还有一个年龄为18的,求所有年龄的平均值为: AVERAGE(A1:A6,18)等于21。

4.CHAR

CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。

Number:用于指定字符的数字,介于1-Number:用于指定字符的数字,介于1-65535之间(包括1和65535)。

示例:

CHAR(88)等于“X”。

CHAR(45)等于“-”。

5.DATE

DATE(year,month,day):返回一个表示某一特定日期的系列数。

Year:代表年,可为一到四位数。

Month:代表月份。

若1 month 12,则函数把参数值作为月。

若month>12,则函数从年的一月份开始往上累加。例如: DATE(2000,25,2)等于2002年1月2日的系列数。

Day:代表日。

若日期小于等于某指定月的天数,则函数将此参数值作为日。

若日期大于某指定月的天数,则函数从指定月份的第一天开始往上累加。若日期大于两个或多个月的总天数,则函数把减去两个月或

多个月的余数加到第三或第四个月上,依此类推。例如:DATE(2000,3,35)等于2000年4月4日的系列数。

备注:

若需要处理公式中日期的一部分,如年或月等,则可用此公式。

若年,月和日是函数而不是函数中的常量,则此公式最能体现其作用。

示例:

DATE(1978, 9, 19)等于1978年9月19日.

DATE(1211, 12, 1)等于1211年12月1日.

6.MAX

MAX(number1,number2,…):返回参数列表中的最大值。

Number1,number2,…:1到30个需要找出最大值的参数。

备注:

参数可以是数字、空白单元格、逻辑值或数字的文本表达式。

如果数组或引用参数中包含可解析文本值,逻辑值,零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

如果参数中没有任何数字,MAX将返回0。

示例:

MAX(0.1,0,1.2)等于1.2。

7.MIN

MIN(number1,number2,…):返回参数列表中的最小值。

Number1,number2,…:1到30个需要找出最小值的参数。

备注:

若参数中没有数字,函数MIN将返回0。

参数应为数字、空白单元格、逻辑值或是表示数值的文本串。如果参数是错误值时,MIN将返回错误信息。

如果数组或引用参数中包含可解析文本值,逻辑值,零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

示例:

如果B1:B4包含3,6,9,12,则:

MIN(B1:B4)等于3。

MIN(B1:B4,0)等于0。

TIME

TIME(hour,minute,second):返回代表指定时间的小数。介于0:00:00(12:00:00 A.M.)与23:59:59(,

1:59:59 P.M.)之间的时间可返回0到0.99999999之间的对应数值。

Hour:介于0到23之间的数。

Minute:介于0到59之间的数。

Second:介于0到59之间的数。

示例:

TIME(14,40,0)等于2:40 PM。

TIME(19,43,24)等于7:43 PM。

8.RANGE

RANGE(from,to,step)函数表示从整数from开始,以step为每一步的示例:直到整数to的一个数字序列。

备注:

RANGE函数有三种参数形式

RANGE(to),缺省默认from为1,step为1

RANGE(from,to),默认的step为1

RANGE(from,to,step),个参数的情况参照上面的注释

示例:

RANGE(4)返回[1,2,3,4].

RANGE(-5)返回[].

RANGE(-1,3)返回[-1,0,1,2,3].

RANGE(0,5)返回[0,1,2,3,4,5].

RANGE(6,-1,-2)返回[6,4,2,0].

RANGE(4,1,1)返回[].

ARRAY

ARRAY(arg1,arg2...):返回一个由arg1,arg2,...组成的数组。

ar1,ar2,...字符串或者数字。

示例:

ARRAY("hello")=["hello"].

ARRAY("hello","world")=["hello","world"].

ARRAY("hello",98)=["hello",98].

ARAY(67,98)=[67,98].

二. 报表函数

本章节凡是以tableNameviewName作为参数因子的。函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。

 

1.CLASS

CLASS(object):返回object对象的所属的类。

2.CNMONEY

CNMONEY(number,unit)返回人民币大写。

number:需要转换的数值型的数。

unit:单位,"s","b","q","w","sw","bw","qw","y","sy","by","qy","wy"分别代表“拾”,“佰”,“仟”,“万”,“拾万”,“佰万”,“仟万”,“亿”,“拾亿”,“佰亿”,“仟亿”,“万亿”。

备注:

单位可以为空,如果为空,则直接将number转换为人民币大写,否则先将number与单位的进制相乘,然后再将相乘的结果转换为人民币大写。

示例:

CNMONEY(1200)等于壹仟贰佰圆整。

CNMONEY(12.5,"w")等于壹拾贰万伍仟圆整。

CNMONEY(56.3478,"bw")等于伍仟陆佰叁拾肆万柒仟捌佰圆整。

CNMONEY(3.4567,"y")等于叁亿肆仟伍佰陆拾柒万圆整。

3.COL

COL()返回当前单元格的列号。

示例:

如果当前单元格是A5,在A5中写入"=col()"则返回1。

如果当前单元格是C6,在C6中写入"=col()"则返回3。

4.COLCOUNT

COLCOUNT(tableData):返回tableData中列的个数。

tableData:tableData的名字,字符串形式的。

备注:

先从私有数据源中查找,然后再从公有数据源中查找,返回的是第一个查找到的tableData中列数。

示例:

以我们提供的数据源FRDemo为例

COLCOUNT("Check")等于6。

COLCOUNT("country")等于5。

5.COLNAME

COLNAME(tableData,colIndex)返回的是tableData中列序号colIndex的列名。

tableData:表示TableData的名字,字符串形式。

colIndex:表示列序号。

备注:

TableData先从私有数据源中查找,再从公有数据源中查找。

示例:

COLNAME("Check",3)等于AcceName。

COLNAME("country",4)等于Area。

6.EVAL

EVAL(exp):返回表达式exp计算后的结果。

exp:一个表达式形式字符串。

备注:

只要EVAL中的参数exp最终可以转化成一表达式形式的字符串,比如"sum(2,4)","2+7"等等,那么它就可以被计算。

示例:

EVAL("2+5")等于7。

EVAL("count(2,3)")等于2。

EVAL("sum"+"(2,3,5)")等于10。

EVAL(IF(true, "sum", "count") + "(1,2,3,4)")等于10。

EVAL(IF(false, "sum", "count") + "(1,2,3,4)")等于4。

7.FIELDS

FIELDS(connectionName,tableName):返回tableName这个表中的所有字段名。

示例:

数据库BASE中有个名叫task的表的内容如下:

name start end

a 2008 2009

b 2009 2012

那么FIELDS("BASE","task")等于[name,start,end].

8.FORMAT

FORMAT(object,format) :返回object的format格式。

object:需要被格式化对象,可以是String,数字,Object(常用的有Date, Time)。

format:格式化的样式。

备注:

此处的格式中大小写必须严格按照上面例子中的规则,月份:大写MM,年份小写:yyyy或yy,天份:小写dd.

此处作为参数因子的格式可以用' '也可以用" "引用。

示例:

Format(TODAY(), 'yyyy-MM-dd')结果是2008-11-01

9.INMAP

INMAP(key, value, mapName):判断数据字典mapName中是否包含键值为key,值为value的数据对。返回值为布尔型。有返回TRUE,没有返回FALSE。

key:检测的key。

value:检测的value。

mapName:指定的数据字典名。

备注:

mapName必须为String型的。

示例:

INMAP(1, 2, "customerdic")返回 Boolean.TRUE(布尔型的)。

10.ISNULL

ISNULL(object):判断对象中所有的值是否全部都是Primitive.NULL。

11.MAP

MAP(key, mapName):返回名字为mapName的数据字典中的key所对应的值。

key:与返回值相应的数据字典中的key。

mapName:指定的数据字典名,注意数据字典名要加引号

示例:

MAP(1,"customername")等于"Yixing Hongda Food Co."。

12.RECORDS

RECORDS(connection, table,field):返回数据库表table中字段名field下的所有元素。

示例:

数据库BASE中有个名叫task的表的内容如下:

name start end

a 2008 2009

b 2009 2012

那么RECORDS("BASE","task","end")等于[2009,2012].

RECORDS(connection, table,field,row)返回table中field字段下的第row行的记录,field可以为列名也可以为列号。

RECORDS("BASE","task","end",2)等于2012.

RECORDS("BASE","task",2,2)等于2009.

13.REVERSE

REVERSE(value):返回与value相反的逻辑值。

示例:

REVERSE(true)等于false。

14.ROW

ROW()返回当前单元格的行号

示例:

如果当前单元格为A5,在A5中写入"=ROW()"则返回5。

如果当前单元格为B8,在B8中写入"=ROW()"则返回8。

15.ROWCOUNT

ROWCOUNT(tableData)返回tableData的行数。

tableData:TableData的名字,字符串形式的。

备注:

先从私有数据源中查找,然后再从公有数据源中查找,返回的是tableData的行数。

示例:

以我们提供的数据源FRDemo为例

ROWCOUNT("Check")等于3。

ROWCOUNT("country")等于18。

16.TABLEDATAFIELDS

TABLEDATAFIELDS(tableData):返回tableData中所有的字段名。

备注:

先从报表数据集中查找,然后再从服务器数据集中查找,返回的是tableData的列名组成的数组。

示例:

TABLEDATAFIELDS("国家")等于[名字,首都,大陆,面积,人口

17.TABLEDATES

TABLEDATAS():返回报表数据集和服务器数据集名字。]

示例:

服务器数据集有:ds1,ds2,ds3;报表数据集有dsr1,dsr2.

TABLEDATAS()等于[dsr1,dsr2,ds1,ds2,ds3].

而TABLEDATAS(0)返回服务器数据集名字;TABLEDATAS(1)返回报表数据集名字;

TABLEDATAS(0)等于[ds1,ds2,ds3];TABLEDATAS(1)等于[dsr1,dsr2].

18.TABLES

TABLEAS(connectionName):返回名为connectionName的数据库中的所有表名。

示例:

假设在FRDemo这个数据库中,有3个表:a,b,c;

那么TABLES("FRDemo")等于[a,b,c].

19.VALUE

VALUE(tableData,row,col)返回tableData中行号为row,列号为col的值。

tableData:tableData的名字,字符串形式的。

row:行号。

col:列号。

备注:

先从私有数据源中查找,然后再从公有数据源中查找,返回的是tableData的符合条件的值。

示例:

VALUE("country",5,3)等于South America。

VALUE("Simple",8,3)等于jonnason。

三.数组函数

1.ADD2ARRAY

ADDARRAY(array, insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。

示例:

ADDARRAY([3, 4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7].

ADDARRAY([3, 4, 1, 5, 7], "测试", 3)返回[3, 4, "测试", 1, 5, 7].

注意:

如果start为小于1的数或者不写start参数,则默认从数组的第一位开始插入数组元素

ARRAY

ARRAY(arg1,arg2...):返回一个由arg1,arg2,...组成的数组.

arg1,arg2,...:字符串或者数字.

示例:

ARRAY("hello") = ["hello"].

ARRAY("hello","world") = ["hello","world"].

ARRAY("hello",98) = ["hello",98].

ARRAY(67,98) = [67,98].

GETARRAYELEMENT

GETARRAYELEMENT(array, index):函数返回数组array的第index个元素。

示例:

String[] array = {"a", "b", "c", "d"}

GETARRAYELEMENT(array, 3)等于c.

GETARRAYELEMENT(array, 1)等于a.

2.GREPARRAY

GREPARRAY(array,fn):函数(返回true或者false)是条件,过滤此数组,最后形成一个新数组。

示例:

GREPARRAY([3,4,2,3,6,8,7], "item != 3")等于[4,2,6,8,7]

注意:该函数的第二个参数是一个字符串。

3.INARRAY

INARRAY(co, array):返回co在数组array中的位置,如果co不在array中,则返回0.

示例:

String[] arr = {"a","b","c","d"}

那么INARRAY("b", arr)等于2.

4.INDEX

INDEX(key,val1,val2,...):返回key在val1,val2,...所组成的序列中的位置,不存在于序列中则返回参数的个数.

备注:

key和valn可以是任意类型

示例:

INDEX(2,2)等于1。

INDEX(2,1,2)等于2。

INDEX(2,4,5,6)等于4。

INDEX("b","b","o","y")等于1。

5.INDEXOFARRAY

INDEXOFARRAY(array, index):返回数组array的第index个元素。

示例:

INDEXOFARRAY(["第一个", "第二个", "第三个"], 2)返回"第二个"。

6.MAPARRAY

MAPARRAY(array, fn):把一个数组中的项目转换到另一个数组中。

array (Array):要转换的数组

fn (Function):处理数组项目的函数

示例:

MAPARRAY([3,4,2,3,6,8,7], "item != 3")等于[false,true,true,false,true,true,true].

7.RANGE

RANGE(from,to,step)函数表示从整数from开始,以step为每一步的示例:直到整数to的一个数字序列。

备注:

RANGE函数有三种参数形式

RANGE(to),缺省默认from为1,step为1

RANGE(from,to),默认的step为1

RANGE(from,to,step),个参数的情况参照上面的注释

示例:

RANGE(4)返回[1,2,3,4].

RANGE(-5)返回[].

RANGE(-1,3)返回[-1,0,1,2,3].

RANGE(0,5)返回[0,1,2,3,4,5].

RANGE(6,-1,-2)返回[6,4,2,0].

RANGE(4,1,1)返回[].

8.REMOVEARRAY

REMOVEARRAY(array, start, deleteCount):从数组array中删除从第start个元素开始的deleteCount个数组元素,并返回删除后的数组。

示例:

REMOVEARRAY([3, 4, 4, 2, 6, 7, 87], 4, 2)返回[3, 4, 4, 7, 87].

9.REVERSEARRAY

REVERSEARRAY(array):返回数组array的倒序数组。

示例:

REVERSEARRAY(["第一个", "第二个", "第三个"])返回["第三个", "第二个", "第一个"].

10.SLICEARRAY

SLICEARRAY(array, start, end):返回数组从第start个到第end个元素(包括第end个元素)。

示例:

SLICEARRAY([3, 4, 4, 5, 1, 5, 7], 3, 6)返回[4, 5, 1, 5].

当不使用end参数时,返回从start开始到数组结束之间的元素。

SLICEARRAY([3, 4, 4, 5, 1, 5, 7], 3)返回[4, 5, 1, 5, 7].

11.SORTARRAY

SORTARRAY(array):返回数组array排过序的数组。

示例:

SORTARRAY([3, 4, 4, 5, 1, 5, 7])返回[1, 3, 4, 4, 5, 5, 7].

注意:数组array的元素类型必须一样,并且要可比较。

12.UNIQUEARRAY

UNIQUEARRAY(array):去掉数组array中的重复元素。

示例:

UNIQUEARRAY([14, 2, 3, 4, 3, 2, 5, 6, 2, 7, 9, 12, 3])返回[14, 2, 3, 4, 5, 6, 7, 9, 12].

四. 数学和三角函数

1.ABS

ABS(number):返回指定数字的绝对值。绝对值是指没有正负符号的数值。

Number:需要求出绝对值的任意实数。

示例:

ABS(-1.5)等于1.5。

ABS(0)等于0。

ABS(2.5)等于2.5。

2.ACOS

ACOS(number):返回指定数值的反余弦值。反余弦值为一个角度,返回角度以弧度形式表示。

Number:需要返回角度的余弦值。

备注:

函数的参数必须在-1和1之间,包括-1和1。

返回的角度值在0和Pi之间。

如果要把返回的角度用度数来表示,用180/PI()乘返回值即可。

示例:

ACOS(1)等于0(弧度)。

ACOS(0.5)等于1.047197551(Pi/3弧度)。

ACOSACOSH(0.5)*180/PI()等于60(度)。

ACOSH

ACOSH(number):返回给定数值的反双曲余弦。

Number:返回值的双曲余弦。

备注:

参数number的值必须大于或等于1。

ACOSH(COSH(number))=number。

示例:

ACOSH(1)等于0。

ACOSH(8)等于2.768659383。

ACOSH(5.5)等于2.389526435

3.ASIN

ASIN(number):返回指定数值的反正弦值。反正弦值为一个角度,返回角度以弧度形式表示。

Number:需要返回角度的正弦值。

备注:

指定数值必须在-1到1之间(含1与-1)。

返回角度在-pi/2到pi/2之间(含-pi/2与pi/2)。

用角度形式返回数值时,可以用返回数值乘以180/PI()。

示例:

ASIN(0.5)等于0.523598776(pi/6弧度)。

ASIN(1)等于1.570796327(pi/2弧度)。

ASIN(0.5)*180/PI()等于30(度)。

4.ASINH

ASINH(number):返回指定数值的反双曲正弦值。反双曲正弦值的双曲正弦等于指定数值。即: ASINH(SINH(number))=number。

Number:任意实数。

示例:

ASINH(-5)等于-2.312438341。

ASINH(8)等于2.776472281。

ASINH(16)等于3.466711038。

5.ATAN

ATAN(number):计算指定数值的反正切值。指定数值是返回角度的正切值,返回角度以弧度形式表示。

Number:返回角度的正切。

备注:

返回角度在-pi/2到pi/2之间。

如果返回角度等于-pi/2或pi/2,ATAN将返回错误信息*NUM!。

用角度形式返回数值时,返回数值乘以180/PI()。

示例:

ATAN(-1)等于-0.785398163(-pi/4弧度)。

ATAN(0)等于0(弧度)。

ATAN(2)*180/PI()等于63.43494882(度)。

6.ATAN2

ATAN2(x_num,y_num):返回x、y坐标的反正切值。返回角度为x轴与过(x_num,y_num)与坐标原点(0,0)的一条直线形成的角度。该角度以弧度显示。

X_num:指定点的x坐标。

Y_num:指定点的y坐标。

备注:

正值表示从x轴开始以逆时针方式所得的角度;负值表示从x轴开始以顺时针方式所得的角度。

ATAN2(a,b)=ATAN(b/a),a为0时除外。

当x_num与y_num都为0时,ATAN2返回错误信息*DIV/0!。

用角度制显示返回数值时,把返回数值乘以180/PI()。

返回值以弧度表示(返回值大于-pi且小于等于pi)。

示例:

ATAN2(-2,2)等于2.356194490(弧度制的3*pi/4)。

ATAN2(2,2)等于0.785398163(弧度制的pi/4)。

ATAN2(-2,2)*180/PI()等于135(角度制)。

7.AVERAGE

AVERAGE(number1,number2,…):返回指定数据的平均值。

Number1,number2…:用于计算平均值的参数。

备注:

参数必须是数字,或是含有数字的名称,数组或引用。

如果数组或引用参数中含有文字,逻辑值,或空白单元格,这些值将被忽略;但是,单元格中的零值则参与计算。

示例:

如果A1:A6被命名为“ages”,分别等于10,23,14,24,33及25,则:

AVERAGE(A1:A6)等于21.5。

AVERAGE(ages)等于21.5。

如果还有一个年龄为18的,求所有年龄的平均值为: AVERAGE(A1:A6,18)等于21。

8.BITNOT

BITNOT(int):将一个十进制整数进行二进制取反运算。

int:需要进行转换的十进制数。

示例:

BITNOT(3)等于-4。

BITNOT(12)等于-13。

9.BITOPERATION

BITOPERATIOIN(int,int,op)位运算,返回两个整数根据op进行位运算后的结果。

int:十进制整数。

op:位运算操作符,支持"&"(与),"|"(或),"^"(异或),"<<"(左移),">>"(右移)。

示例:

BITOPERATION(4,2,"&")表示4与2进行"与"运算,结果等于0。

BITOPERATION(4,2,"|")表示4与2进行"或"运算,结果等于6。

BITOPERATION(4,2,"^")表示4与2进行"异或"运算,结果等于6。

BITOPERATION(4,2,"<<")表示4按位左移2位,结果等于16。

BITOPERATION(4,2,">>")表示4按位右移2位,结果等于1。

BITOPERATION(4,1,"^~")表示4与2进行"同或"运算,结果为-7。

10.CEILING

CEILING(number,significance):将参数number沿绝对值增大的方向,舍入为基数的最小倍数。

Number:指待舍入的数值。

Significance:基数。

备注:

当number,significance任意一个为非数值型时,CEILING返回错误信息*VALUE?。

当number,significance符号不同时,CEILING返回错误信息*VALUE?。

无论数字符号如何,都按远离零的方向舍入。如果number已经为significance的倍数,则不进行舍入。

示例:

CEILING(2.5,-1)等于*VALUE?。

CEILING(-2.5,-1)等于-3。

CEILING(0.5,2)等于2。

11.COMBIN

COMBIN(number,number_chosen):返回若干个指定对象的组合数。该函数与数学表达式为Cnk功能相同。

Number或数学表达式中的"n"指对象总数。

Number_chosen或数学表达式中的"k"指在对象总数中某一组合的数量。

备注:

Number与number_chosen必须是非负整数,且Number>=number_chosen.否则返回*VALUE?。

对象组合是对象总体的子集。与排列不同的是,组合不涉及对象内部排序。

假设number=n,number_chosen= k,则:COMBIN(n,k)=Cnk=n!/(k!(n-k)!)。

示例:

COMBIN(5,2)等于10。

12.COS

COS(number):返回一个角度的余弦值。

Number:以弧度表示的需要求余弦值的角度。

备注:

要把一个角度转换成弧度值,将角度乘于PI()/180。

COS(n*2*PI()+number)=COS(number)(其中n为整数,number从-pi到pi)。

示例:

COS(0.5)等于0.877582562。

COS(30*PI()/180)等于0.866025404。

13.COSH

COSH(number):返回一个数值的双曲线余弦值。

Number:需要求其双曲线余弦值的一个实数。

备注:

双曲线余弦值计算公式为:,其中e是自然对数的底,e=2.71828182845904。

示例:

COSH(3)等于10.06766200。

COSH(5)等于74.20994852。

COSH(6)等于201.7156361。

14.COUNT

COUNT(value1,value2,…):计算数组或数据区域中所含数字项的个数。

Value1,value2,…:可包含任何类型数据的参数,但此函数只将数字类型的数据计算在内。

备注:

数字、日期或以文字代表的数字参数将被计算在内;但无法转换成数字的错误值或文本值参数将忽略不计。

如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

15.DEGREES

DEGREES(angle):将弧度转化为度。

Angle:待转换的弧度角。

示例:

DEGREES(PI()/2)等于90。

DEGREES(3.1415926)等于179.9999969。

16.EVEN

EVEN(number):返回沿绝对值增大方向取整后最接近的偶数。使用该函数可以处理那些成对出现的对象。

number:所要取整的数值。

备注:

不论正负号如何,数值都朝着远离 0的方向舍入。如果 number恰好是偶数,则不须进行任何舍入处理。

示例:

EVEN(1.5)等于 2

EVEN(3)等于 4

EVEN(2)等于 2

EVEN(-1)等于 -2

17.EXP

EXP(number):返回e的n次幂。常数e为自然对数的底数,等于2.71828182845904。

Number:为任意实数,作为常数e的指数。

备注:

如果要返回其他常数作为底数的幂,可以使用指数运算符(^)。例如:在4^2中,4是底数,而2是指数。

EXP函数与LN函数互为反函数。

示例:

EXP(0)等于1。

EXP(3)等于20.085536于 2

EXP(LN(2))等于2。

18.FACT

FACT(number):返回数的阶乘,一个数的阶乘等于0!*1*2*3*...*number(其中0!=1)。

number:要计算其阶乘的非负数。如果输入的 number不是整数,则截尾取整。

示例:

FACT(1)等于 1

FACT(1.9)等于 FACT(1)等于 1

FACT(0)等于 1

FACT(5)等于0!*1*2*3*4*5等于 120

19.FLOOR

FLOOR(number,significance):将参数number沿绝对值减小的方向去尾舍入,使其等于最接近的基数的倍数。

Number:待舍入的数值。

Significance:基数。

备注:

当number和significance任意一个为非数值型的参数时,函数FLOOR返回错误信息*VALUE?。

当number和significance的符号不同时,函数FLOOR返回错误信息*VALUE?。

无论number的符号如何,舍入时参数的绝对值都将缩小。如果number恰好是指定倍数,则无需进行任何舍入处理。

其中significance不可以取零。

示例:

FLOOR(2.5,-1)等于*VALUE?。

FLOOR(-2.5,-1)等于-2。

FLOOR(2.5,2)等于2。

FLOOR(0.143,0.03)等于0.12。

20.INT

INT(number):返回数字下舍入(数值减小的方向)后最接近的整数值。

Number:需要下舍入为整数的实数。

示例:

INT(4.8)等于4。

INT(-4.8)等于-5。

INT(4.3)等于4。

INT(-4.3)等于-5。

公式INT(A1)将返回A1单元格中的一个正实数的整数数部分。

21.LESS

LESS(value1,value2,…, value):计算数组或数据区域中所含小于最后一个数据项的数据项个数。

Value1,value2,…:可包含任何类型数据的参数,但此函数只将数字类型的数据计算在内。

备注:

数字、日期或以文字代表的数字参数将被计算在内;但无法转换成数字的错误值或文本值参数将忽略不计。

如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

value一般取数值型参数。如果为非数值型,则返回"0".

示例:

LESS(10, 2, 20) = 2

LESS(12, 2, 10, 20) = 3

假设A1是30, A2是800, A3是30 LESS(A1:A3, 200, 200, 400) = 4

LESS(20) =0

22.LN

LN(number):返回一个数的自然对数。自然对数以常数项 e(2.71828182845904)为底。

number:是用于计算其自然对数的正实数。

示例:

LN(86)等于 4.45437

LN(2.7182818)等于 1

LN(EXP(3))等于 3

23.LOG

LOG(number,base):按指定的任意底数,返回数值的对数。

Number:需要求对数的正实数。

Base:对数的底数。缺省默认值为10。

示例:

LOG(16,2)等于4。

LOG(10)等于1。

LOG(24,3)等于2.892789261。

24.LOG10

LOG10(number):返回以 10为底的对数。

number:用于常用对数计算的正实数。

示例:

LOG10(86)等于1.934498451

LOG10(10)等于A1单元格中的一个正实数的整数部分。

25.MAX

MAX(number1,number2,…):返回参数列表中的最大值。

Number1,number2,…:1到30个需要找出最大值的参数。

备注:

参数可以是数字、空白单元格、逻辑值或数字的文本表达式。

如果数组或引用参数中包含可解析文本值,逻辑值,零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

如果参数中没有任何数字,MAX将返回0。

示例:

MAX(0.1,0,1.2)等于1.2。

26.MAXLESSVALUE

MAXLESSVALUE(number, dictionary):返回数据字典dictionary中比number小的最大的数。

示例:

数据字典:customDictionary

键 值

1 1

2 2

3 3

4 4

MAXLESSVALUE(2.4, "customDictionary")等于2。

27.MIN

MIN(number1,number2,…):返回参数列表中的最小值。

Number1,number2,…:1到30个需要找出最小值的参数。

备注:

若参数中没有数字,函数MIN将返回0。

参数应为数字、空白单元格、逻辑值或是表示数值的文本串。如果参数是错误值时,MIN将返回错误信息。

如果数组或引用参数中包含可解析文本值,逻辑值,零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

示例:

如果B1:B4包含3,6,9,12,则:

MIN(B1:B4)等于3。

MIN(B1:B4,0)等于0。

28.MINBIGVALUE

MINBIGVALUE(number, dictionary):返回dictionary中比number大的最小的数。

示例:

数据字典:customDictionary

键 值

1 1

2 2

3 3

4 4

MINBIGVALUE(2.4, "customDictionary")等于3。

29.MOD

MOD(number,divisor):返回两数相除的余数。结果的正负号与除数相同。

number:为被除数。

divisor:为除数。

示例:

MOD(3, 2)等于 1

MOD(-3, 2)等于 1

MOD(3, -2)等于 -1

MOD(-3, -2)等于 -1

30.MORE

MORE(value1,value2,…, value):计算数组或数据区域中所含大于最后一个数据项的数字项个数。

Value1,value2,…:可包含任何类型数据的参数,但此函数只将数字类型的数据计算在内。

备注:

数字、日期或以文字代表的数字参数将被计算在内;但无法转换成数字的错误值或文本值参数将忽略不计。

如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格,这些值都将参与计算,而不可解析的文本值忽略不计。

value一般取为数值型,否则返回结果为零。

示例:

MORE(100, 200, 20) = 2

MORE(100, 200, 200, 20) = 3

假设A1是30, A2是10, A3是30 MORE(A1:A3, 200, 200, 20omDictionary")等于3。

31.ODD

ODD(number):返回对指定数值进行舍入后的奇数。

number:是要舍入求奇的数值。

不论正负号如何,数值都朝着远离 0的方向舍入。如果 number恰好是奇数,则不须进行任何舍入处理。

示例:

ODD(1.5)等于 3

ODD(3)等于 3

ODD(2)等于 3

ODD(-1)等于 -1

32.PI

PI:是一个数学常量,函数返回精确到15位的数值3.141592653589793。

示例:

SIN(PI()/2)等于1。

计算圆的面积的公式: S=PI()*(r^2),其中S为圆的面积,R为圆的半径。

33.POWER

POWER(number,power):返回指定数字的乘幂。

Number:底数,可以为任意实数。

Power:指数。参数number按照该指数次幂乘方。

备注:

可以使用符号“^”代替POWER,如: POWER(5,2)等于5^2。

示例:

POWER(6,2)等于36。

POWER(14,5)等于537824。

POWER(4,2/3)等于2.519842100。

POWER(3,-2.3)等于0.079913677。

34.PRODUCT

PRODUCT(number1,number2, ...):将所有以参数形式给出的数相乘,并返回乘积值。

number1, number2, ...:为 1到 n个需要相乘的数字参数。(参数个数的上限为30)

示例:

PRODUCT(3,4)等于 12

PRODUCT(3,4,5)等于 60

35.PROMOTION

PROMOTION(value1,value2):返回value2在value1上提升的比例.

示例:

PROMOTION(12, 14)等于0.166666666,即提升了16.6666666%.

PROMOTION(-12, 14)等于2.166666666,即提升了216.6666666%.

36.RADIANS

RADIANS(angle):将角度转换成弧度。

Angle:需要转换为弧度的角度。

示例:

RADIANS(90)等于1.570796327(Pi/2弧度)。

37.RAND

RAND():返回一个随机数。数值位于1区域[0,1]每计算一次工作表,函数都会返回一个新的随机数值。

备注:

要生成一个位于a和b之间的随机数,可以使用以下的公式: C=RAND()*(b-a)+a。

如果要使一个随机产生的数值不随单元格的重计算而改变,可以在编辑框中输入=RAND()并保持编辑状态,然后按F9,将公式永久性地改为随机数。

示例:

假如需要生成一个大于等于0,小于60的随机数,使用公式: =RAND()*60。

假如需要生成一个大于等于0,小于19的随机数,使用公式: =RAND()*19。

假如需要生成一个大于等于0,小于50的随机数,使用公式: =RAND()*50。

38.RANDBETWEEN

RANDBETWEEN(value1,value2):返回value1和value2之间的一个随机整数。

示例:

RANDBETWEEN(12.333, 13.233)只会返回13。

RANDBETWEEN(11.2, 13.3)有可能返回12或者13。

39.RANK

RANK(number,ref,order):返回一个数在一个数组中的秩。(如果把这个数组排序,该数的秩即为它在数组中的序号。)

Number所求秩的数。(可以是Boolean型,true=1,false=0)

Ref可以是数组,引用,或一系列数,非实数的值被忽略处理(接受Boolean型,true=1,false=0)。

Order指定求秩的参数,非零为升序,零为降序

备注:

RANK对重复的数返回相同的秩,但重复的数影响后面的数的秩,比如,在一组升序排列的整数中,如果5出现了2次,并且秩为3,那么6的秩为5 (没有数的秩是4).

在前面的例子中,如果想得到5的修正的秩为3.5,可以在返回秩的基础上加上一个修正因子。该修正因子同时适合升序和降序的情况。

修正因子为[COUNT(ref) + 1 – RANK(number, ref, 0) – RANK(number, ref, 1)]/2.

在下面的例子中,RANK(A2,A1:A5,1) = 3。修正因子为 (5 + 1 – 2 – 3)/2 = 0.5修正后的秩为 3 + 0.5 = 3.5。如果number在ref中只出现一次,修正因子等于0,秩不会变化。

示例:

A1:A5 = 6, 4.5, 4.5, 2, 4

RANK(A1,A1:A5,1)即 6的秩为 5.

RANK(3,1,2,"go",3, 13.3)有可能返回12或者13。

40.ROUND

ROUND(number,num_digits):返回某个数字按指定位数舍入后的数字。

number:需要进行舍入的数字。

num_digits:指定的位数,按此位数进行舍入。

如果 num_digits大于 0,则舍入到指定的小数位。

如果 num_digits等于 0,则舍入到最接近的整数。

如果 num_digits小于 0,则在小数点左侧进行舍入。

示例:

ROUND(2.15, 1)等于 2.2

ROUND(2.149, 1)等于 2.1

ROUND(-1.475, 2)等于 -1.48

ROUND(21.5, -1)等于 20

41.ROUNDDOWN

ROUNDDOWN(number,num_digits):靠近零值,向下(绝对值减小的方向)舍入数字。

number:为需要向下舍入的任意实数。

num_digits:舍入后的数字的位数。

备注:

函数 ROUNDDOWN和函数 ROUND功能相似,不同之处在于函数 ROUNDDOWN总是向下舍入数字。

示例:

ROUNDDOWN(3.2, 0)等于 3

ROUNDDOWN(76.9,0)等于 76

ROUNDDOWN(3.14159, 3)等于 3.141

ROUNDDOWN(-3.14159, 1)等于 -3.1

ROUNDDOWN(31415.92654, -2)等于 31,400

42.ROUNDUP

ROUNDUP(number,num_digits):远离零值,向上(绝对值增大的方向)舍入数字。

number:为需要向上舍入的任意实数。

num_digits:舍入后的数字的位数。

备注:

函数 ROUNDUP和函数 ROUND功能相似,不同之处在于函数 ROUNDUP总是向上舍入数字。

示例:

ROUNDUP(3.2,0)等于 4

ROUNDUP(76.9,0)等于 77

ROUNDUP(3.14159, 3)等于 3.142

ROUNDUP(-3.14159, 1)等于 -3.2

ROUNDUP(31415.92654, -2)等于 31,500

43.SIGN

SIGN(number):返回数字的符号。当数字为正数时返回 1,为零时返回 0,为负数时返回 -1。

Number:为任意实数。

示例:

SIGN(10)等于 1

SIGN(4-4)等于 0

SIGN(-0.00001)等于 -1

44.SIN

SIN(number):计算给定角度的正弦值。

Number:待求正弦值的以弧度表示的角度。

备注:

如果参数的单位是度,将其乘以PI()/180即可转换成弧度。

示例:

SIN(10)等于-0.544021111。

SIN(45*PI()/180)等于0.707106781。

45.SINH

SINH(number):返回某一数字的双曲正弦值。

number:为任意实数。

示例:

SINH(1)等于1.175201194

SINH(-1)等于 -1.175201194

46.SQRT

SQRT(number):返回一个正数的平方根。

Number:要求平方根的数。

备注:

Number必须是一个正数,否则函数返回错误信息NAN。

示例:

SQRT(64)等于8。

SQRT(-64)返回NAN。

47.SUM

SUM(number1,number2,…):求一个指定单元格区域中所有数字之和。

Number1,number2,…:1到30个参数或指定单元格区域中所有数字。

备注:

函数将直接键入参数中的数值、逻辑值及文本表达式计算在内。

若参数是数组或引用,则只有数组或单元格引用中的数值进行计算。

示例:

SUM(70,80)等于150。

SUM("70",80,TRUE)等于151,逻辑值“TRUE”作为1来计算;“FALSE”作为0计算;文本“70”作为0来计算。

SUM(A1:A5)对A1到A5之间的格子中的数值求和。

SUM(A1:A5,50)对A1到A5之间的格子中的数值和数值50求和。

48.SUMSQ

SUMSQ(number1,number2, ...):返回所有参数的平方和。

number1, number2, ...:为 n个需要求平方和的参数(n的上限为30),也可以使用数组或对数组的引用来代替以逗号分隔的参数。

示例:

SUMSQ(3, 4)等于 25

49.TAN

TAN(number):返回指定角度的正切值。

Number:待求正切值的角度,以弧度表示。如果参数是以度为单位的,乘以Pi()/180后转换为弧度。

示例:

TAN(0.8)等于1.029638557。

TAN(45*Pi()/180)等于1。

50.TANH

TANH(number):返回某一数字的双曲正切值。

number:为任意实数。

示例:

TANH(-2)等于 -0.96403

TANH(0)等于 0

TANH(0.5)等于 0.462117

51.TOBINARY

TOBINARY(int):将一个十进制整型数转换成二进制表示的字符串。

int:表示需要进行转换的十进制整数。

示例:

TOBINARY(10)等于"1010"。

TOBINARY(20)等于"10100"。

52.TOHEX

TOHEX(int):将一个十进制整型数转换成十六进制表示的字符串。

int:表示需要进行转换的十进制整数。

示例:

TOHEX(15)等于"f"。

TOHEX(20)等于"14"。

53.TOOCTAL

TOOCTAL(int):将一个十进制整型数转换成八进制表示的字符串。

int:表示需要进行转换的十进制整数。

示例:

TOOCTAL(10)等于"12"。

TOOCTAL(20)等于"24"。

54.TRUNC

TRUNC(number,num_digits):取整。将数字的小数部分截去,返回整数。

number:需要截尾取整的数字。

num_digits:用于指定取整精度的数字。

示例:

TRUNC(8.9)等于 8

TRUNC(-8.9)等于 -8

TRUNC(PI())等于 3。

55.UUID

UUID():返回随机的机器数。

备注:

此处的缺省默认值为36.

示例:

UUID()返回36位随机机器数。

UUID(32)返回32位随机机器数。

五. 文本函数

1.CHAR

CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。

Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。

示例:

CHAR(88)等于“X”。

CHAR(45)等于“-”。

2.CODE

CODE(text):计算文本串中第一个字符的数字代码。返回的代码对应于计算机使用的字符集。

Text:需要计算第一个字符代码的文本或单元格引用。

示例:

CODE("S")等于83。

CODE("Spreadsheet")等于83。

3.CONCATENATE

CONCATENATE(text1,text2,...):将数个字符串合并成一个字符串。

Text1,text2,...:需要合并成单个文本的文本项,可以是字符,数字或是单元格引用。

备注:

也可以用“&”来代替CONCATENATE函数对文本项进行合并。

示例:

CONCATENATE("Average ","Price")等于“Average Price”,这相当于“Average”&“ ”&“Price”。

CONCATENATE("1","2")等于12。

4.ENDWITH

ENDWITH(str1,str2):判断字符串str1是否以str2结束。 备注: str1和str2都是大小写敏感的。

示例:

ENDWITH("FineReport","Report")等于true

ENNUMBER。ENDWITH("FineReport","Fine")等于false。 ENDWITH("FineReport","report"ENNUMBER

ENNUMBER(value):将给定的BigDecimal类型的数字转化成英文金额的字符串。

5.ENMONEY

ENMONEY(value):将给定的BigDemical类型的数字转换成英文金额字符串。

示例:

ENMONEY(23.49)等于TWENTY。

6.ENNUMER

ENNUMBER(value):将给定的BigDecimal类型的数字转化成英文金额的字符串。

7.EXACT

EXACT(text1,text2):检测两组文本是否相同。如果完全相同,EXACT函数返回TRUE;否则,返回FALSE。EXACT函数可以区分大小写,但忽略格式的不同。同时也可以利用EXACT函数来检测输入文档的文字。

Text1:需要比较的第一组文本。

Text2:需要比较的第二组文本。

示例:

EXACT("Spreadsheet","Spreadsheet")等于TRUE。

EXACT("Spreadsheet","S preadsheet")等于FALSE。

EXACT("Spreadsheet","spreadsheet")等于FALSE。

8.FIND

FIND(find_text,within_text,start_num):在文本串中查找另一文本串,并且从within_text中的第一个字符开始返回到find_text的起始位置编号。也可以使用SEAERCH函数在文本串中查找另一文本串,所不同的是FIND函数能区分大小写,但不允许使用通配符。

Find_text:需要查找的文本或包含文本的单元格引用。

Within_text:包含需要查找文本的文本或单元格引用。

Start_num:指定进行查找字符的起始位置。在within_text中起始位置字符编号为1。如果省略start_num,则假设值为1。

备注:

如果find_text不在within_text中,FIND函数返回错误信息*VALUE!。

如果start_num不大于0,FIND函数返回错误信息*VALUE!。

如果start_num大于within_text的长度,FIND函数返回错误信息*VALUE!。

如果find_text是空白文本,FIND函数将在搜索串中匹配第一个字符(即编号为start_num或1的字符)。

示例:

FIND("I","Information")等于1。

FIND("i","Information")等于9。

FIND("o","Information",2)等于4。

FIND("o","Information",12)等于*VALUE!。

9.INDEXOF

INDEXOF(str1,index):返回字符串str1在index位置上的字符。

备注:

index是从0开始计数的。

示例:

INDEXOF("FineReport",0)等于'F'。

INDEXOF("FineReport",2)等于'n'。

INDEXOF("FineReport",9)等于't'。

10.LEFT

LEFT(text,num_chars):根据指定的字符数返回文本串中的第一个或前几个字符。

Text:包含需要选取字符的文本串或单元格引用。

Num_chars:指定返回的字符串长度。

备注:

Num_chars的值必须等于或大于0。

如果num_chars大于整个文本的长度,LEFT函数将返回所有的文本。

如果省略num_chars,则默认值为1。

示例:

LEFT("Fine software",8)等于“Fine sof”。

LEFT("Fine software")等于“F”。

如果单元格A3中含有“China”,则LEFT(A3,2)等于“Ch”。

11.LEN

LEN(text):返回文本串中的字符数。

Text:需要求其长度的文本,空格也计为字符。

示例:

LEN("Evermore software")等于17。

LEN(" ")等于1。

12.LOWER

LOWER(text):将所有的大写字母转化为小写字母。

Text:需要转化为小写字母的文本串。LOWER函数不转化文本串中非字母的字符。

示例:

LOWER("A.M.10:30")等于“a.m.10:30”。

LOWER("China")等于“china”。

13.MID

MID(text,start_num,num_chars):返回文本串中从指定位置开始的一定数目的字符,该数目由用户指定。

Text:包含要提取字符的文本串。

Start_num:文本中需要提取字符的起始位置。文本中第一个字符的start_num为1,依此类推。

Num_chars:返回字符的长度。

备注:

如果start_num大于文本长度,MID函数返回“”(空文本)。

如果start_num小于文本长度,并且start_num加上num_chars大于文本长度,MID函数将从start_num指定的起始字符直至文本末的所有字符。

如果start_num小于1,MID函数返回错误信息*VALUE!。

如果num_chars是负数,MID函数返回错误信息*VALUE!。

示例:

MID("Finemore software",10,8)返回“software”。

MID("Finemore software",30,5)返回“”(空文本)。

MID("Finemore software",0,8)返回*VALUE!。

MID("Finemore software",5,-1)返回*VALUE!。

14.NUMTO

NUMTO(number):返回number的中文表示。

示例:NUMTO(2345)等于二三四五。

15.PROPER

PROPER(text):将文本中的第一个字母和所有非字母字符后的第一个字母转化成大写,其他字母变为小写。

Text:需要转化为文本的公式、由双引号引用的文本串或是单元格引用。

示例:

PROPER("Finemore Integrated Office")等于“Finemore Integrated Office”。

PROPER("100 percent")等于“100 Percent”。

PROPER("SpreaDSheEt")等于“Spreadsheet”。

16.REGEXP

REGEXP(str, pattern):字符串str是否与正则表达式pattern相匹配。

示例:

REGEXP("aaaaac","a*c")等于true。

REGEXP("abc","a*c")等于false。

REGEXP(str, pattern, intNumber):字符串str是否与具有给定模式 intNumber的正则表达式pattern相匹配。

备注:

CASE_INSENSITIVE = 0启用不区分大小写的匹配。

标志连同此标志来启用 Unicode感知的、不区分大小写的匹配。 默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII字符集中的字符。可以通过指定 UNICODE_CASE

MULTILINE = 1启用多行模式。

DOTALL = 2启用 dotall模式。

在 dotall模式中,表达式 可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。

UNICODE_CASE = 3启用 Unicode感知的大小写折叠

指定此标志后,由CASE_INSENSITIVE标志启用时,不区分大小写的匹配将以符合 Unicode Standard的方式完成。

CANON_EQ = 4启用规范等价。

指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。

UNIX_LINES = 5启用 Unix行模式。

在此模式中,.、^和 $的行为中仅识别 '\n'行结束符。

LITERAL = 6启用模式的字面值解析。

指定此标志后,指定模式的输入字符串就会作为字面值字符序列来对待。输入序列中的元字符或转义序列不具有任何特殊意, 标志 CASE_INSENSITIVE和 UNICODE_CASE在与此标志一起使用时将对匹配产生影,其他标志都变得多余了。

COMMENTS = 7模式中允许空白和注释。

此模式将忽略空白和在结束行之前以 #开头的嵌入式注释。

示例:

REGEXP("Aaaaabbbbc","a*b*c", 3)等于true

REGEXP("Aaaaabbbbc","a*b*c", 1)等于false。

17.REPLACE

REPLACE(old_text,start_num,num_chars,new_text):根据指定的字符数,用其他文本串来替换某个文本串中的部分内容。

Old_text:需要被替换部分字符的文本或单元格引用。

Start_num:需要用new_text来替换old_text中字符的起始位置。

Num_chars:需要用new_text来替换old_text中字符的个数。

New_text:需要替换部分旧文本的文本。

示例:

REPLACE("0123456789",5,4,"*")等于“0123*89”。

REPLACE("1980",3,2,"99")等于“1999”。

18.REPT

REPT(text,number_times):根据指定的次数重复显示文本。REPT函数可用来显示同一字符串,并对单元格进行填充。如果number_times为0,REPT函数将返回“”(空文本)。如果number_times不是整数,将被取整。REPT函数的最终结果通常不大于32767个字符。

Text:需要重复显示的文本或包含文本的单元格引用。

Number_times:指定文本重复的次数,且为正数。

备注:

该函数可被用于在工作表中创建简单的直方图。

示例:

REPT("$",4)等于“$$$$”。

如果单元格B10的内容为“你好”,REPT(B10,3.6)等于“你好你好你好”。

19.RIGHT

RIGHT(text,num_chars):根据指定的字符数从右开始返回文本串中的最后一个或几个字符。

Text:包含需要提取字符的文本串或单元格引用。

Num_chars:指定RIGHT函数从文本串中提取的字符数。Num_chars不能小于0。

如果num_chars大于文本串长度,RIGHT函数将返回整个文本。如果不指定num_chars,则默认值为1。

示例:

RIGHT("It is interesting",6)等于“esting”。

RIGHT("Share Holder")等于“r”。

RIGHT("Huge sale",4)等于“sale”。

20.SPLIT

SPLIT(String1,String2):返回由String2分割String1组成的字符串数组。

String1:以双引号表示的字符串。

String2:以双引号表示的分隔符。例如逗号","

备注:

如果只有一个参数,则返回一个错误。

如果有多个参数,则只有前两个起作用。

示例:

SPLIT("hello,world,yes",",") = ["hello","world","yes"]。

SPLIT("this is very good"," ") = ["this","is","very","good"]。

21.STARTWITH

STARTWITH(str1,str2):判断字符串str1是否以str2开始。

备注:

str1和str2都是大小写敏感的。

示例:

STARTWITH("FineReport","Fine")等于true。

STARTWITH("FineReport","Report")等于false。

STARTWITH("FineReport","Fine")等于false。

22.SUBSTITUTE

SUBSTITUTE(text,old_text,new_text,instance_num):用new_text替换文本串中的old_text。

Text:需要被替换字符的文本,或含有文本的单元格引用。

Old_text:需要被替换的部分文本。

New_text:用于替换old_text的文本。

Instance_num:指定用new_text来替换第几次出现的old_text。如果指定了instance_num,则只有指定位置上的old_text被替换,否则文字串中出现的所有old_text都被new_text替换。

备注:

如果需要替换文本串中的指定文本,则使用SUBSTITUTE函数;如果需要替换文本串中指定位置上的任意文本,则使用REPLACE函数。

示例:

SUBSTITUTE("data base","base","model")等于“data model”。

SUBSTITUTE("July 28, 2000","2","1",1)等于“July 18, 2000”。

SUBSTITUTE("July 28, 2000","2","1")等于“July 18, 1000”。

SUBSTITUTE("July 28, 2000","2","1",2)等于“July 28, 1000”。

23.TODOUBLE

TODOUBLE(text):将文本转换成Double对象。

Text:需要转换的文本。

示例:

TODOUBLE("123.21")等于 new Double(123.21)。

24.TOINTEGER

TOINTEGER(text):将文本转换成Integer对象。

Text:需要转换的文本。

示例:

TOINTEGER("123")等于 new Integer(123)。

25.TRIM

TRIM(text):清除文本中所有空格,单词间的单个空格除外,也可用于带有不规则空格的文本。

Text:需要清除空格的文本。

示例:

TRIM(" Monthly Report")等于Monthly Report。

26.TOIMAGE

TOIMAGE(path):返回path路径下的image。

27.UPPER

UPPER(text):将文本中所有的字符转化为大写。

Text:需要转化为大写字符的文本,或是包含文本的单元格引用。

示例:

UPPER("notes")等于“NOTES”。

如果单元格E5的值为“Examples”,则UPPER(E5)等于“EXAMPLES”。

六. 日期和时间函数

凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd。而且必须用英文环境下双引号(" ")引用。

1.DATE

DATE(year,month,day):返回一个表示某一特定日期的系列数。

Year:代表年,可为一到四位数。

Month:代表月份。

若1<=month<= 12,则函数把参数值作为月。

若month>12,则函数从年的一月份开始往上累加。例如: DATE(2000,25,2)等于2002年1月2日的系列数。

Day:代表日。

若日期小于等于某指定月的天数,则函数将此参数值作为日。

若日期大于某指定月的天数,则函数从指定月份的第一天开始往上累加。若日期大于两个或多个月的总天数,则函数把减去两个月或多个月的余数加到第三或第四个月上,依此类推。例如:DATE(2000,3,35)等于2000年4月4日的系列数。

备注:

若需要处理公式中日期的一部分,如年或月等,则可用此公式。

若年,月和日是函数而不是函数中的常量,则此公式最能体现其作用。

示例:

DATE(1978, 9, 19)等于1978年9月19日.

DATE(1211, 12, 1)等于1211年12月1日.

2.DATEDELTA

DATEDELTA(date, deltadays):返回一个日期——date后deltadays的日期。

deltaDays可以为正值,负值,零。

示例:

DATEDELTA("2008-08-08", -10)等于2008-07-29。

DATEDELTA("2008-08-08", 10)等于2008-08-18。

3.DATEDIF

DATEDIF(start_date,end_date,unit):返回两个指定日期间的天数、月数或年数。

Start_date:代表所指定时间段的初始日期。

End_date:代表所指定时间段的终止日期。

Unit:函数返回信息的类型。

若unit=“Y”,则DATEDIF返回指定时间段的年差数。

若unit=“M”,则DATEDIF返回指定时间段的月差数。

若unit=“D”,则DATEDIF返回指定时间段的日差数。

若unit=“MD”,则DATEDIF忽略年和月,返回指定时间段的日差数。

若unit=“YM”,则DATEDIF忽略年和日,返回指定时间段的月差数。

若unit=“YD”,则DATEDIF忽略年,返回指定时间段的日差数。

示例:

DATEDIF("2001/2/28","2004/3/20","Y")等于3,即在2001年2月28日与2004年3月20日之间有3个整年。

DATEDIF("2001/2/28","2004/3/20","M")等于36,即在2001年2月28日与2004年3月20日之间有36个整月。

DATEDIF("2001/2/28","2004/3/20","D")等于1116,即在2001年2月28日与2004年3月20日之间有1116个整天。

DATEDIF("2001/2/28","2004/3/20","MD")等于8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天。

DATEDIF("2001/1/28","2004/3/20","YM")等于2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月。

DATEDIF("2001/2/28","2004/3/20","YD")等于21,即忽略年后,2001年2月28日与2004年3月20日的差为21天。

4.DATEINMONTH

DATEINMONTH(date, number):函数返回在某一个月当中第几天的日期。

示例:

DATEINMONTH("2008-08-08", 20)等于2008-08-20。

5.DATEINQUARTER

DATEINQUARTER(date, number):函数返回在某一个季度当中第几天的日期。

示例:

DATEINQUARTER("2009-05-05", 20)等于2009-04-20。

6.DATEINWEEK

DATEINWEEK(date, number):函数返回在某一个星期当中第几天的日期。

示例:

dateInWeek("2008-08-28", 2)等于2008-08-26。

7.DATEINYEAR

DATEINYEAR(date, number):函数返回在某一年当中第几天的日期。

示例:

dateInYEAR("2008/12/03", 300)等于2008-10-26。

8.DATESUBDATE

DATESUBDATE(date1, date2, op):返回两个日期之间的时间差。

op表示返回的时间单位:

"s",以秒为单位。

"m",以分钟为单位。

"h",以小时为单位。

"d",以天为单位。

"w",以周为单位。

示例:

DATESUBDATE("2008-08-08", "2008-06-06","h")等于1512。

9.DATETONUMBER

DATETONUMBER(date):返回自 1970 年 1月 1日 00:00:00 GMT经过的毫秒数。

示例:

DATETONUMBER("2008-08-08")等于1218124800000。

10.DAY

DAY:(serial_number)返回日期中的日。DAY是介于1和31之间的一个数。

Serial_number:含有所求的年的日期.

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

DAY("2000/1/1")等于1。

DAY("2006/05/05")等于5。

DAY("1997/04/20")等于20。

DAY(35796)等于1。

11.DAYS360

DAYS360(start_date,end_date,method):按照一年 360天的算法(每个月以 30天计,一年共计 12个月),

返回两日期间相差的天数,这在会计计算中将会用到。如果财务系统是基于一年 12个月,每月 30天,

可用此函数帮助计算支付款项。

Start_date和 end_date :是用于计算期间天数的起止日期。

Method :它指定了在计算中是采用欧洲方法还是美国方法。

Method定义 :

FALSE或忽略 美国方法 (NASD)。如果起始日期是一个月的 31号,则等于同月的 30号。如果终止日期是一个月的

31号,并且起始日期早于 30号,则终止日期等于下一个月的 1号,否则,终止日期等于本月的 30号。

TRUE欧洲方法。无论是起始日期还是终止日期为一个月的 31号,都将等于本月的 30号。

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

DAYS360("1998/1/30", "1998/2/1")等于 1.

12.DAYSOFMONTH

DAYSOFMONTH(date):返回从1900年1月后某年某月包含的天数。 示例:

DAYSOFMONTH("1900-02-01")等于28。

DAYSOFMONTH("2008/04/04")等于30。

13.DAYSOFQUARTER

DAYSOFQUARTER(date):返回从1900年1月后某年某季度的天数。

示例:

DAYSOFQUARTER("2009-02-01")等于90。

DAYSOFQUARTER("2009/05/05")等于91。

14.DAYSOFYEAR

DAYSOFYEAR(year):返回1900年以后某年包含的天数。

示例:

DAYSOFYEAR(2008)等于365,等价于DAYSOFYEAR("2008-01-01")。

15.DATEVALUE

DATEVALUE(date_text):返回代表date_text的一个系列数。此函数可用来把一个文本形式的日期转化为一个系列数。

Date_text:是在电子表格日期格式中代表日期的文本格式。例如“2000/2/28”

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。在1900年

日期系统中,永中Office电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,将1900年1月3日保存

为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

DATEVALUE("2000/1/1")等于36526。

16.HOUR

HOUR(serial_number):返回某一指定时间的小时数。函数指定HOUR为0(0:00)到23(23:00)之间的一个整数。

Serial_number:包含所求小时的时间。

示例:

HOUR("11:32:40")等于11。

17.MINUTE

MINUTE(serial_number):返回某一指定时间的分钟数,其值是介于0与59之间的一个整数。

Serial_number:包含所求分钟数的时间。

示例:

MINUTE("15:36:25")等于36。

18.MONTH

MONTH:(serial_number)返回日期中的月。月是介于1和12之间的一个数。

Serial_number:含有所求的月的日期.

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

MONTH("2004/5/5")等于5。

MONTH(35796)等于1。

19.MONTHDELTA

MONTHDELTA(date,delta):返回指定日期date后delta个月的日期。

示例:

MONTHDELTA("2008-08-08", 4)等于2008-12-08。

20.NOW

NOW():获取当前时间。

示例:

如果系统时间是15点18分38秒

则NOW()等于15:18:36。

21.SECOND

SECOND(s erial_number):返回某一指定时间的秒数,其值是介于0与59之间的一个整数。

Serial_number:包含所求秒数的时间。

示例:

SECOND("15:36:25")等于25。

SECOND("15:36:25", "HH:mm:ss")等于25。

22.TIME

TIME(hour,minute,second):返回代表指定时间的小数。介于0:00:00(12:00:00 A.M.)与23:59:59(11:59:59 P.M.)之间的时间可返回0到0.99999999之间的对应数值。

Hour:介于0到23之间的数。

Minute:介于0到59之间的数。

Second:介于0到59之间的数。

示例:

TIME(14,40,0)等于2:40 PM。

TIME(19,43,24)等于7:43 PM。

23.TODATE

TODATE()函数可以将各种日期形式的参数转换为日期类型。

它有三种参数的形式:

1参数是一个日期型的参数,那么直接将这个参数返回。

示例:

TODATE(DATE(2007,12,12))返回2007年12月12日组成的日期。

2参数是以从1970年1月1日0时0分0秒开始的毫秒数,返回对应的时间。

示例:

TODATE(1023542354746)返回2002年6月8日。

3参数是日期格式的文本,那么返回这个文本对应的日期。

示例:

TODATE("2007/10/15")返回2007年10月5日组成的日期。

TODATE("2007-6-8")返回2007年6月8日组成的日期。

4有两个参数,第一个参数是一个日期格式的文本,第二个参数是用来解析日期的格式。

示例:

TODATE("1/15/07","MM/dd/yy")返回07年1月15日组成的日期.

注意:此处的格式中月份必须大写MM,年份小写:yy(不可以为yyyy)。天份小写:dd。

24.TODAY

TODAY():获取当前日期。

示例:

如果系统日期是2005年9月10日

则TODAY()等于2005/9/10。

25.WEEKDAY

WEEKDAY(Serial_number):获取日期并返回星期数。返回值为介于0到6之间的某一整数,分别代表星期中的某一天(从星期日到星期六)。

Serial_number:输入的日期

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

举例:

WEEKDAY("2005/9/10")等于6(星期六)。

WEEKDAY("2005/9/11")等于0(星期日)。

WEEKDAY(35796)等于4(星期四)。

26.WEEKNUM

WEEKNUM(serial_num):返回一个代表一年中的第几周的数字。

Serial_num:表示输入的日期。

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

WEEKNUM("2005/1/1")等于1。

WEEKNUM("2005/1/6")等于2。

WEEKNUM(35796)等于1。

27.YEAR

YEAR:(serial_number)返回日期中的年。Year是介于1900和9999之间的一个数。

Serial_number:含有所求的年的日期.

备注:

FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。

在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,

将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。

示例:

YEAR("2000/1/1")等于2000。

YEAR("2006/05/05")等于2006。

YEAR("1997/04/20")等于1997。

YEAR(35796)等于1998。

28.YEARDELTA

YEARDELTA(date, delta):返回指定日期后delta年的日期。

示例:

YEARDELTA("2008-10-10",10)等于2018-10-10。

. 逻辑函数

1.AND

AND(logical1,logical2,…):当所有参数的值为真时,返回TRUE;当任意参数的值为假时,返回FALSE。

Logical1,logical2,…:指1到30个需要检验TRUE或FALSE的条件值。

备注:

参数必须是逻辑值,或是含有逻辑值的数组或引用。

如果数组或引用中含有文本或空的单元格,则忽略其值。

如果在指定的单元格区域中没有逻辑值,AND函数将返回错误信息*NAME?。

示例:

AND(1+7=8,5+7=12)等于TRUE。

AND(1+7=8,5+7=11)等于FALSE。

如果单元格A1到A4的值分别为TRUE、TRUE、FALSE和TRUE,则: AND(A1:A4)等于FALSE。

如果单元格A5的值在0如果单元格A5的值在050之间,则: AND(0<50)等于TRUE。

IF

IF(boolean,number1/string1,number2/string2):判断函数,boolean为true时返回第二个参数,为false时返回第三个。

boolean:用于判断的布尔值,true或者false。

number1/string1:第一个参数,如果boolean为ture,返回这个值。

number2/string2:第二个参数,如果boolean为false,返回这个值。

示例:

IF(true,2,8)等于2

IF(false,"first","second")等于second

IF(true,"first",7)等于first

2.NVL

NVL(value1,value2):返回第一个不为null的value值,如果value1不为null,则返回value1的值,否则返回value2的值,如果value1和value2都是null,则返回null。

value1:可以为任意数,也可以为null。

value2:可以为任意数,也可以为null。

备注:

此处的NVL(value1,value2)为短路运算符。即当第一个不为空的情况下,直接返回第一个的值,而对后面的将不再运算。也可以为ull。

示例: NVL(12,20)等于12。

NVL(null,12)等于12。

NVL(20,null)等于20。

NVL(null,null)等于null。

 

你可能感兴趣的:(finereport 帆软学习笔记--已解决的问题)