2.计算函数

计算函数主要用于硕正组件自身的表达式中，比如树列表XML模版中的表达式、报表单元格中直接输入的公式。此外，也可以以"全局函数"方式被js直接调用，函数如下:

分类 | 函数名 | 用途
--- | --- | ---
公共函数 | if | 条件判断函数
js | 调用页面的javascript函数
数学函数 | sum | 求和
sumDim | 数组求和
average | 求平均值
max | 求最大值
min | 求最小值
median | 求中位数
percent | 求百分比
abs | 绝对值
round | 四舍五入
int | 取整
mod | 求余数
floor | 小于等于n(参数)的最大整数
ceil | 大于等于n(参数)的最小整数
sqrt | 平方根
exp | e的n次幂
log | log
log10 | 以10为底的log
pow | n(参数)的n次方
rand | 随机数
var / vara | 求方差方差
varp / varpa | 求总体方差
stdev / stdeva | 求偏差
stdevp / stdevpa | 求总体偏差
文字函数 | len | 取串长度(字数)
left | 取串的左n个字
right | 取串的右n个字
mid | 取串的中间若干个字
indexOf | 取子串在串中的位置
indexOneOf | 子串中任一字符最先出现在串中的位置
indexOfArray | 取串在串数组中的位置
endWith | 串是否以某子串结尾
like | 串是否匹配(类似SQL Like)
compare | 比较2个串
replace | 替换串的中间若干个字
replaceAll | 替换串的中某些子串
replaceOneOf | 替换串的中某些字符
toLowerCase | 把串中的英文转换为小写
toUpperCase | 把串中的英文转换为大写
trim | 除去串的首尾空格、或任意串
trimLeft | 除去串的左侧空格、或任意串
trimRight | 除去串的尾部空格、或任意串
trimToNumber | 除去头、尾多余的字符, 取出数字串
concatenate | 字符串合并相加
encodeURI | 对文字进行URI编码
encodeURIComponent | 对更多文字进行URI编码
englishNum | 英文数字
chineseNum | 中文大写
RMB | 人民币大写
formatDate | 按指定掩码表示日期
formatNum | 按指定掩码表示数值
chineseDate | 中文的日期表示
chineseBankDate | 中国银行的日期表示
日期函数 | dateDifYears | 2个日期的年度之差
dateDifMonths | 2个日期的月份之差
dateDifDays | 2个日期的天数之差
dateDifWorkDays | 2个日期之间的工作日天数
dateDifHours | 2个日期的小时之差
dateDifMinutes | 2个日期的分钟数之差
dateAddYears | 日期增加若干年
dateAddMonths | 日期增加若干月
dateAddDays | 日期增加若干天
dateAddHours | 日期增加若干小时
dateAddMinutes | 日期增加若干分钟
getYear | 取某日期的年度
getMonth | 取某日期的月份
getDay | 取某日期的日期号
getDayOfWeek | 求某日是星期几
getDayOfYear | 求某日是年度中的第几天
GetHour | 取某日期时间型串的小时
getMinute | 取某日期时间型串的分钟
now | 取当前日期
compareDate | 比较2个日期大小
firstDateOfMonth | 取得某日期的月初日期
firstDateOfSeason | 取得某日期的季初日期
firstDateOfYear | 取得某日期的年初日期
lastDateOfMonth | 取得某日期的月末日期
lastDateOfSeason | 取得某日期的季末日期
lastDateOfYear | 取得某日期的年末日期
Treelist专用函数 | isNull | 判断某单元格内容是否为null
row | 取得当前行
Report专用函数(1) | ref | 引用其它单元格
refAlias | 按别名引用其它单元格
refData | 引用其它单元格的原始内容
refText | 引用其它单元格的显示内容
refAliasData | 按别名引用其它单元格的原始内容
refAliasText | 按别名引用其它单元格的显示内容
refAliasPrint | 按别名引用其它单元格(当前打印页内)
row | 取得本单元格(或指定单元格)的行号
col | 取得本单元格(或指定单元格)的列号
rows | 取得当前工作表的总行数
cols | 取得当前工作表的总列数
WorkSheets | 取得工作表总数
CurrentWorkSheet | 取得当前工作表的顺序号
CellName(语法一) | 取得本单元格的单元名
CellName(语法二) | 取得指定单元格的单元名
sumif(语法一) | 按条件求sum
sumif(语法二) | 参照某列的条件求sum
sumif(语法三) | 参照某些列的条件求sum
countif | 按条件求单元格数
averageif | 按条件求平均值
maxifs | 按条件求最大值
minifs | 按条件求最小值
phonetic | 字符串合并相加
pages | 总共打印页数
page | 当前打印页
pageBatch | 在批打印中的当前打印页
pagesBatch | 批打印的总页数
vPages | 纵向分页数
vPage | 纵向的当前分页
hPages | 横向分页数
hPage | 横向的当前分页
PageSum | 分页小计 (打印页)
Report专用函数(2): 数据源函数 | dataRow | 顺序填入数据源中的数据行
headRow | 填入数据源的标题行
data | 取得数据源中的单个数据
head | 取得数据源的单个标题
search | 从数据源中搜索
dataRows | 取得数据源总行数
dataRowNumber | 填入数据源中的行号

函数详解:

if | 条件判断函数 |
参数1 | 条件，非零表示满足条件
参数2 | 条件满足时的返回值
参数3 | 条件未满足时的返回值
返回值 | 见参数
示例 | =if(getDay(now())<10, '上旬', if(getDay(now())>=20,'下旬','中旬'))

js | 反向调用当前页面的JavaScript函数(“当前页面”是指包容当前控件的页面) |
参数1 | 要调用的js函数名
参数2 | 可选, 该js函数的第一个参数
参数3 | 可选, 该js函数的第二个参数，以下以此类推...
返回值 | 由js函数决定
备注 | 函数的返回值就是 js 函数的返回值，在硕正报表组件中，允许返回 SoapLike 格式的异常包, 其格式请参见 "4.XML/JSON异常包"
示例 | 例如表达式: =js('getProd', '1', 'true') 那么在当前页面上必须有名为 getProd 的 js 函数, 该函数要有2个参数，例如： function getProd(index, isOpened) { ... return 1; }

sum | 求和 |
参数 | 参数数量可任意
返回值 | 数值
示例 | =sum(14.21, 220.3, sum(22, 33))
备注 | 1.在硕正报表中，参数可以含有单元名，例如 sum(D4:E9, K5, K7); 2.在硕正报表中，如果要对数据源填充区某列求和, 但因为行数是未知的, 应该写成诸如 sum(D4:@D4)这种格式, 表示从 D4单元格开始向下，直到数据源的末行

sumDim | 数组求和 |
参数 | 参数数量可任意，参数的形式是以某个字符分隔的多个数字
返回值 | 和参数类似的形式
备注 | 分隔符可以是除空格外的任意字符(或字符串)，但必须保持一致
示例 | =sumDim("1.1 / 2.1 / 3", "10 / 20 / 30") 返回的将是串"11.1 / 22.1 / 33" 在硕正报表中，参数可以含有单元名，例如 sumDim(D4:D9)

average | 求平均值 |
参数 | 参数数量可任意
返回值 | 数值

max | 求最大值 |
参数 | 参数数量可任意
返回值 | 数值

min | 求最小值 |
参数 | 参数数量可任意
返回值 | 数值

median | 求中位数 |
参数 | 参数数量可任意
返回值 | 数值

percent | 求百分比 |
参数1 | 数字
参数2 | 可选, 小数位数，默认为0
返回值 | 百分比串，带'%'符号
示例 | =percent(0.12345, 2)，返回值为串“12.35%”

abs | 绝对值 |
参数 | 数字
返回值 | 正数

round | 四舍五入 |
参数1 | 数字
参数2 | 小数位数
返回值 | 数值
示例 | =round(12.345, 2)，返回值为 12.35

int | 取整 |
参数 | 数字
返回值 | 整数

mod | 求余数 |
参数1 | 被除数
参数2 | 除数
返回值 | 余数
示例 | =mod(32, 10)，返回值为 2

floor | 小于或等于n(参数)的最大整数 |
参数 | 数字
返回值 | 整数
示例 | =floor(3.999)，返回值为 3

ceil | 大于或等于n(参数)的最小整数 |
参数 | 数字
返回值 | 整数
示例 | =Ceil(3.2)，返回值为 4

sqrt | 平方根 |
参数 | 数字
返回值 | 数值

exp | e的n次幂 |
参数 | 数字
返回值 | 数值

log | log |
参数 | 数字
返回值 | 数值

log10 | 以10为底的log |
参数 | (无)
返回值 | 数值

pow | n(参数)的n次方 |
参数1 | 底数
参数2 | 幂数
返回值 | 数值

rand | 随机数 |
参数 | (无)
返回值 | 0 - 0.99

var vara | 求方差 |
参数 | 参数数量可任意, 同 sum( ) 函数
返回值 | 数值
示例 | =var(A3:A10) =vara(A3:A10)

varp varpa | 求总体方差 |
参数 | 参数数量可任意, 同 sum( ) 函数
返回值 | 数值
示例 | =varp(A3:A10) =varpa(A3:A10)

stdev stdeva | 求偏差 |
参数 | 参数数量可任意, 同 sum( ) 函数
返回值 | 数值
示例 | =stdev(A3:A10) =stdeva(A3:A10)

stdevp stdevpa | 求总体偏差 |
参数 | 参数数量可任意, 同 sum( ) 函数
返回值 | 数值
示例 | =stdevp(A3:A10) =stdevpa(A3:A10)

len | 取串长度(字数) |
参数 | 串
返回值 | 数值
示例 | =len('字符串12')，返回值5

left | 取串的左n个字 |
参数1 | 串
参数2 | 字数
返回值 | 串

right | 取串的右n个字 |
参数1 | 串
参数2 | 字数
返回值 | 串

mid | 取串的中间若干个字 |
参数1 | 串
参数2 | 位置(从0开始)
参数3 | 字数
返回值 | 串

indexOf | 取子串在串中的位置 |
参数1 | 串
参数2 | 子串
参数3 | 可选, 开始查找位置，默认为0
参数4 | 可选, 大小写是否敏感，默认为0(即不敏感)
返回值 | 位置，从0开始，-1表示未找到

indexOfArray | 取串在串数组中的位置 |
参数1 | 串数组
参数2 | 串
参数3 | 可选, 开始查找位置，默认为0
参数4 | 可选, 大小写是否敏感，默认为0(即不敏感)
参数5 | 可选, 数组中各个串的分隔符, 默认是逗号
返回值 | 位置，从0开始，-1表示未找到
示例 | =indexOfArray('01, 1, 03, 0301', '03')，返回值为2 =indexOfArray('A/aA/AA/aa', 'AA', 0, 0, '/')，返回值为1

indexOneOf | 子串中任一字符最先出现在串中的位置 |
参数1 | 串
参数2 | 子串
参数3 | 可选, 开始查找位置，默认为0
参数4 | 可选, 大小写是否敏感，默认为0(即不敏感)
返回值 | 位置，从0开始，-1表示未找到
示例 | =indexOneOf('abc882nd', '0123456789')，返回值为3

endWith | 串是否以某子串结尾 |
参数1 | 串
参数2 | 子串
参数3 | 可选, 大小写是否敏感，默认为0(即不敏感)
返回值 | 1/0, 表示是/否

like | 串是否匹配(类似SQL Like) |
参数1 | 串
参数2 | 通配符，可以包含如下符号: %(替代一个或多个字符)、_(仅替代一个字符)、[charlist](字符列中的任何单一字符)、[!charlist](或[^charlist]，不在字符列中的任何单一字符), 也可以用 - 分隔的范围，比如[a-z]
参数3 | 可选, 大小写是否敏感，默认为0(即不敏感)
返回值 | 1/0, 表示是/否
示例 | =like('Certern', 'C_r_er') =like('ACertern', '[ALN]%')

compare | 比较2个串 |
参数1 | 串1
参数2 | 串2
参数3 | 可选, 大小写是否敏感，默认为0(即不敏感)
返回值 | 整数，0表示相等；大于0表示串1大于串2；小于0表示串1小于串2

replace | 替换串的中间若干个字 |
参数1 | 串
参数2 | 位置(从0开始)
参数3 | 长度
参数4 | 替换的串
返回值 | 被替换后的串

replaceAll | 替换串的中某些子串 |
参数1 | 串
参数2 | 需要被替换的串
参数3 | 替换的新串
返回值 | 被替换后的串
示例 | =replaceAll('ABCA', 'A', '02')，返回值为串“02BC02”

replaceOneOf | 替换串的中某些字符 |
参数1 | 串
参数2 | 需要被替换的各个字符
参数3 | 替换的新串
返回值 | 被替换后的串
示例 | =replaceOneOf('ABCA', 'CA', '02')，把串中的C、A都替换为 "02", 返回值为串 “02B0202”

toLowerCase | 把串中的英文转换为小写 |
参数 | 串
返回值 | 串

toUpperCase | 把串中的英文转换为大写 |
参数 | 串
返回值 | 串

trim | 除去串的首尾空格、或任意串 |
参数1 | 串
参数2 | 可选，要除去的串，默认空格
返回值 | 串

trimLeft | 除去串的左侧空格、或任意串 |
参数1 | 串
参数2 | 可选，要除去的串，默认空格
返回值 | 串

trimRight | 除去串的尾部空格、或任意串 |
参数1 | 串
参数2 | 可选，要除去的串，默认空格
返回值 | 串

concatenate | 字符串合并、相加 |
参数 | 串
返回值 | 串
备注 | 参数个数任意
示例 | =concatenate('A', 'B', 'C')，返回为 ABC

trimToNumber | 除去头、尾多余的字符, 取出数字串 |
参数 | 串
返回值 | 数字串
示例 | =trimToNumber('总计: 13,203.17 吨')，返回值为 13203.17 注: 其中如果有多个数值，则返回第一个 =trimToNumber('The cod is 13, 12, 22')，返回值为 13

encodeURI | 对文字进行URI编码 |
参数 | 串
返回值 | 串
备注 | encodeURI不会对数字、字母和“-_.!~*'()”进行编码，也不会对有特殊含义的“;/?:@=+$,#&”进行编码
示例 | =encodeURI('http://www.supcan.cn/supcan?val=硕正RIA')，返回值为串“http://www.supcan.cn/supcan?val=%e7%a1%95%e6%ad%a3RIA”

encodeURIComponent | 对更多文字进行URI编码 |
参数 | 串
返回值 | 串
备注 | 和encodeURI的唯一差别是：会对有特殊含义的“;/?:@=+$,#&”进行编码
示例 | =encodeURIComponent('硕正RIA')，返回值为串“%e7%a1%95%e6%ad%a3RIA”

englishNum | 英文数字 |
参数 | 数字
返回值 | 串
示例 | =englishNum(10123.24)，返回值为串“ten thousand one hundred and twenty three point twenty four”

chineseNum | 中文大写 |
参数1 | 0至9之间的数字，允许有多个数字
参数2 | 1 表示普通的中文大写，0或忽略该参数表示中文金额的大写
返回值 | 串
示例 | =chineseNum(123) 返回值为串“壹贰叁”; =chineseNum(123, 1) 返回值为串“一二三”

RMB | 人民币大写 |
参数 | 数字
返回值 | 串
示例 | =rmb(10123.24)，返回值为串“壹万零壹佰贰拾叁元贰角肆分”

formatDate | 按指定掩码表示日期 |
参数1 | 日期串
参数2 | 掩码，如'YYYY.MM.DD hh:mm:ss'、'YY年度'. 上面的Y、M、D、h、m、s为掩码保留字，次序位置无规定，其含义说明如下： Y - 年，YYYY表示4位显示, YY表示显示后2位; M - 月，MM表示2位显示，不足2位的左侧以'0'填补; D - 日，DD表示2位显示，不足2位的左侧以'0'填补; Month(或Mon) - 英文的月份; Month.(或Mon.) - 英文的月份缩写; Day - 英文的星期; Day. - 英文的星期缩写; h - 小时，hh表示2位显示，不足2位的左侧以'0'填补; m - 分钟，mm表示2位显示，不足2位的左侧以'0'填补; s - 秒，ss表示2位显示，不足2位的左侧以'0'填补;
返回值 | 串
示例 | =formatdate(now(), 'YYYY年MM月DD日')，返回值例如“2010年08月05日” =formatdate(now(), 'YYYY年M月D日')，返回值例如“2010年8月15日” =formatdate(now(), 'D, Month YYYY, day')，返回值例如“15, August 2010, Sunday”

formatNum | 按指定掩码表示数值 |
参数1 | 数值
参数2 | 掩码，如'#,##0.00'、'共：#.00# 吨'. 掩码中'0'表示固定位、'#'表示任意位、','表示千位符.
返回值 | 串
备注 | 最常用的掩码为"#,##0.00"，表示小数始终显示2位、整数部分任意但至少有1位、且以千位符分隔.
示例 | =formatNum(12345.6, '#,##0.00')，返回“12,345.60”; =formatNum(0, '#.#')，返回空串; =formatNum(0, '#,##0.00')，返回"0.00"; =formatNum(123456, '编码 00 - 00 - 00 - 00')，返回"编码 00 - 12 - 34 - 56"; =formatNum(1234.5678, '00.00')，返回"34.56";

chineseDate | 中文的日期表示 |
参数1 | 日期串
参数2 | 可选, 掩码，默认是'YYYY年MM月DD日'
返回值 | 串

chineseBankDate | 中国银行的日期表示 |
参数1 | 日期串
参数2 | 格式，默认是'YYYY年MM月DD日'
返回值 | 串
示例 | =chineseBankDate(now())，返回值例如“贰零壹零年零捌月壹拾伍日”

dateDifYears | 2个日期的年度之差 |
参数1 | 日期1
参数2 | 日期2
返回值 | 数值

dateDifMonths | 2个日期的月份之差 |
参数1 | 日期1
参数2 | 日期2
返回值 | 数值
示例 | =dateDifMonths('2010.1.19', '2010.12.21')，返回11

dateDifDays | 2个日期的天数之差 |
参数1 | 日期1
参数2 | 日期2
返回值 | 数值

dateDifWorkDays | 2个日期之间的工作日天数 |
参数1 | 日期1
参数2 | 日期2
参数3 | 可选，定义的非工作日，以逗号分隔的纯数字，1到7表示星期一到星期日, 数字后带减号(-)表示按半天算。默认值是6,7
返回值 | 数值
备注 | 本函数只是粗略计算，未考虑春节、圣诞节等其它法定假日因素
示例 | =dateDifWorkDays('2010.1.19', '2010.12.21', '6-,7')，//周六算半天、周日为非工作日

dateDifHours | 2个日期的小时之差 |
参数1 | 日期1
参数2 | 日期2
返回值 | 数值

dateDifMinutes | 2个日期的分钟数之差 |
参数1 | 日期1
参数2 | 日期2
返回值 | 数值

dateAddYears | 日期增加若干年 |
参数1 | 日期
参数2 | 数字
返回值 | 新的日期

dateAddMonths | 日期增加若干月 |
参数1 | 日期
参数2 | 数字
返回值 | 新的日期

dateAddDays | 日期增加若干天 |
参数1 | 日期
参数2 | 数字
返回值 | 新的日期

dateAddHours | 日期增加若干小时 |
参数1 | 日期
参数2 | 数字
返回值 | 新的日期

dateAddMinutes | 日期增加若干分钟 |
参数1 | 日期
参数2 | 数字
返回值 | 新的日期

getYear | 取某日期的年度 |
参数 | 日期
返回值 | 数值

getMonth | 取某日期的月份 |
参数 | 日期
返回值 | 数值

getDay | 取某日期的日期号 |
参数 | 日期
返回值 | 数值

getDayOfWeek | 求某日是星期几 |
参数1 | 日期
参数2 | 可选, 可以是字符 C 、E
返回值 | 如果不指定参数2, 那么返回的是 0 到 6 之间的数字, 0表示星期日, 1表示星期一, ... 以此类推; 如果参数2是字符 C (表示中文), 返回的将是日, 一, 二..., 六; 如果参数2是字符 E (表示英文), 返回的将是Sunday, Monday, Tuesday..., Saturday;
示例 | getDayOfWeek(now( )) getDayOfWeek(now( ), 'E')

getDayOfYear | 求某日是年度中的第几天 |
参数 | 日期
返回值 | 数字, 范围是 1 到 366

GetHour | 取某日期时间型串的小时 |
参数 | 日期
返回值 | 数值

getMinute | 取某日期时间型串的分钟 |
参数 | 日期
返回值 | 数值

now | 取当前日期 |
参数 | 可选, 格式掩码，默认是'%Y.%m.%d %H:%M:%S'，掩码含义如下(注意大小写)： %Y - 4位数字的年; %y - 2位数字的年; %m - 月份(01至12); %d - 月中的某日(01至31); %H - 小时(24小时制，00至23); %I - 小时(12小时制，01至12); %M - 分钟(00至59); %S - 秒钟(00至59); %p - AM/PM表示上午/下午; %x - 日期的英文普遍写法; %X - 时间的英文普遍写法; %c - 日期时间的英文普遍写法; %b - 月份的英文缩写; %B - 月份的英文全称; %a - 星期的英文缩写; %A - 星期的英文全称; %w - 数字表示的星期(0至6, 0是星期天); %j - 相对于1月1日的日期差(001至366); %Z - 和GMT(或UTC)时区的时差; 选项： /Z - 转换为GMT(或UTC)时间;
返回值 | 日期串
示例 | 以北京时间2011.1.20 08:00:00为例: now("%Y.%m.%dT%H:%M:%S%Z")将显示为 2011.01.20T08:00:00+08:00 now("%Y.%m.%dT%H:%M:%SZ/Z")将显示为 2011.01.20T00:00:00Z

compareDate | 比较2个日期大小 |
参数1 | 日期1
参数2 | 日期2
返回值 | 1、0或-1，分别表示大于、等于或小于

firstDateOfMonth | 取得某日期的月初日期 |
参数 | 日期
返回值 | 日期

firstDateOfSeason | 取得某日期的季初日期 |
参数 | 日期
返回值 | 日期
示例 | 假如今天是2012.9.5， firstDateOfSeason(now( )) 将返回 “2012.7.1 00:00:00”

firstDateOfYear | 取得某日期的年初日期 |
参数 | 日期
返回值 | 日期
示例 | 假如今天是2012.9.5， firstDateOfYear(now( )) 将返回 “2012.1.1 00:00:00”

lastDateOfMonth | 取得某日期的月末日期 |
参数 | 日期
返回值 | 日期

lastDateOfSeason | 取得某日期的季末日期 |
参数 | 日期
返回值 | 日期
示例 | 假如今天是2012.8.5， lastDateOfSeason(now( )) 将返回 “2012.9.30 23:59:59”

lastDateOfYear | 取得某日期的年末日期 |
参数 | 日期
返回值 | 日期
示例 | 假如今天是2012.8.5， lastDateOfYear(now( )) 将返回 “2012.12.31 23:59:59”

isNull | 判断某单元格内容是否为null |
参数 | 列名，如果为串"data", 则表示自己(当前列)
返回值 | 1/0 - 是/否
备注 | 1.仅用于Treelist的表达式中; 2.参数必须以引号围绕，例如 isNull('price')，否则将无法计算; 3.参数可以带 @origin 宏，表示取原始数据，例如 isNull('price@origin'); 4.只支持数值型、日期型的列，对string列无效; 5.本函数一般用于需要精确判断 0 或 null 的特定场合，在大多数情况下，直接用 price==0 判断即可，比如表达式: if(price==0, '未输入', data), 不管price的值为0或为null, 等式 "price==0" 均是成立的;
示例 | 例一.列的属性定义: displayMask="if(isNull('price'), '未输入', data)" 例二.执行js过滤： var s = AF.func("FindAll", "isNull('price')");

row | 取得当前行 |
返回值 | 行号 (从 0 开始计数)
备注 | 常用于 <Express> 表达式中

ref | 引用其它单元格 |
参数1 | 行号(从1开始计数)
参数2 | 列号(从1开始计数)
参数3 | 可选, 外部报表的URL
参数4 | 可选, 工作表序号(从1开始计数)、或工作表名, 默认是当前工作表
返回值 | 单元格内容
备注 | 1.本函数的参数比较灵活，可以不按照上述的参数顺序，以下面的例子为准; 2.如果要从隐藏的工作表取数，那么就不能用工作表序号，必须采用工作表名; 3.如果是从隐藏工作表取数, 不支持下面例子中的 "B1:D3" 这种写法, 每次只能取一个单元格; 4.引用单元格的原始内容、或者显示内容，由报表 “属性” 对话框的选项决定(下图右侧): 5.如果引用的是外部URL的报表, 只能引用原始内容;
示例 | =ref(3,2) //等同于 =B3 =ref(3, 2, 2) //等同于 =B3@sheet2 =ref('B3', 2) //同上例 =ref('B3', '工作表二') //取指定工作表的B3单元格 =sum(ref(1,2,3,4, 5)) //等同于 =sum(B1:D3@sheet5) =sum(ref('B1:D3', 5)) //同上例 =ref('B3', '../report/akk.xml') //引用外部报表的 B3 单元格，这个URL的相对路径是当前页面 =ref(3, 2, '../report/akk.xml') //和上例同 =ref('B3', '../report/akk.xml', 3) //引用外部报表第三工作表的B3单元格 =ref('B3', '../report/akk.xml', '工作表二') //引用外部报表指定工作表的B3单元格 注1："@sheet"的含义请参见下面的“宏”; 注2：上面例子中如 =ref('B3', 2), 其中的单元名 'B3' 必须要用引号包绕，否则会有歧义

refAlias | 按别名引用其它单元格 |
参数1 | 别名
参数2 | 可选, 其它报表的绝对URL或相对URL(相对于当前页面)
参数3 | 可选, 工作表序号(从1开始计数)、或工作表名, 默认是当前工作表
返回值 | 单元格内容
备注 | 1.本函数的参数比较灵活，可以不按照上述的参数顺序，以下面的例子为准; 2.如果要从隐藏的工作表取数，那么就不能用工作表序号，必须采用工作表名; 3.引用单元格的原始内容、或者显示内容，由报表 “属性” 对话框的选项决定(下图右侧): 4.如果引用的是外部URL的报表, 只能引用原始内容;
示例 | =refAlias('price') //等同于 =@Aliasprice =refAlias('price', 2) //等同于 =@Aliasprice@sheet2 =refAlias('price', '工作表二') //取指定工作表的某别名的内容 =refAlias('price', '../rpt/fin2.xml') //引用外部报表的别名为 price 的单元格内容 (如果该外部报表有多个工作表，将逐个工作表查找别名，直到找到为止) =refAlias('price', '../rpt/fin2.xml', 3) //从外部报表第三个工作表中查找别名为 price 的单元格内容 =refAlias('price', '../rpt/fin2.xml', '工作表二') //从外部报表指定工作表中查找别名为 price 的单元格内容 注："@Alias"、"@sheet"的含义请参见下面的“宏”

refData | 引用其它单元格的原始内容 |
备注 | 1.语法和 ref 函数类似; 2.如果 “属性” 对话框中的选项是引用显示内容, 那么本函数只能引用单个单元格(即不支持 'B1:D3' 这种写法)

refText | 引用其它单元格的显示内容 |
备注 | 1.语法和 ref 函数类似; 2.如果 “属性” 对话框中的选项是引用原始内容, 那么本函数只能引用单个单元格(即不支持 'B1:D3' 这种写法)

refAliasData | 按别名引用其它单元格的原始内容 |
备注 | 语法和 refAlias 函数类似

refAliasText | 按别名引用其它单元格的显示内容 |
备注 | 语法和 refAlias 函数类似

refAliasPrint | 按别名引用当前打印页内的其它单元格 |
参数 | 别名
返回值 | 单元格内容
备注 | 通常是用于每页都打印的文本框中, 并且只在打印、预览、PDF转换输出时生效

row | 取得本单元格(或指定单元格)的行号 |
参数 | 单元格名，如果为空表示本单元格(即自己)
返回值 | 行号，从1开始计数
示例 | =row( ) =row("B11")

col | 取得本单元格(或指定单元格)的列号 |
参数 | 单元格名，如果为空表示本单元格(即自己)
返回值 | 列号，从1开始计数
示例 | =col( ) =col("B11")

rows | 取当前工作表的总行数 (包括用来封闭表格线的最后辅助行) |
返回值 | 行数

cols | 取当前工作表的总列数 (包括用来封闭表格线的最后辅助列) |
返回值 | 列数

WorkSheets | 取工作表总数 |
返回值 | 数量

CurrentWorkSheet | 取的当前工作表的顺序号 |
返回值 | 顺序号, 从 1 开始计数

CellName(语法一) | 取得本单元格的单元名 |
参数 | (无)
返回值 | 单元名，如"A4"、"C13"

CellName(语法二) | 取得指定单元格的单元名 |
参数1 | 行号，从1开始计数
参数2 | 列号，从1开始计数；或列名
返回值 | 单元名，如"A4"、"C13"

sumif(语法一) | 按条件求sum |
参数1 | 以冒号分隔的单元格区域
参数2 | 条件表达式
返回值 | 值
备注 | 条件表达式的写法比较灵活，里面可以内嵌函数、引用别的单元格，比如: "data > 100", 变量 data 表示单元格的数据，也可以和Excel那样，简写成 "> 100"; "data >= 100 + A5", A5是单元格名，表示引用该单元格数据;
示例 | =sumif(A2:B20, ">200"); //对A2到B20区域内，数值大于200的内容求和 =sumif(A2:B20, "data>K20 and data!=K21"); //对A2到B20区域内，数值大于K20单元格数据、且不等于K21单元格的内容求和

sumif(语法二) | 按某列的条件求sum |
参数1 | 以冒号分隔的单元格区域，供条件判断用, 必须为单列
参数2 | 条件表达式，参见 语法一 中的备注
参数3 | 以冒号分隔的单元格区域，数据区, 必须为单列
返回值 | 值
示例 | =sumif(A2:A20, ">200", B2:B20); //A2到A20区域内，数值大于200的内容，对B2:B20对应内容求和 =sumif(A2:A20, "left(data, 2)='CA'", B2:B20); //以“CA”开头的单元格(A2到A20区域内容是字符串)，对应到B2:B20区域内容求和 =sumif(A2:@A2, "left(data, 2)='CA'", B2:@B2); //和上例同，只是区域是数据源的填入区 下图中B11单元格的公式： =sumif(A2:A9, 'indexOfArray("多层,排屋", data) != -1', B2:B9)

sumif(语法三) | 将某些列的内容作为条件求sum |
参数1 | 以冒号分隔的单元格区域，供条件判断用, 必须为单列
参数2、3...n | 同上，其它条件列
参数5 | 条件表达式，表达式中，分别用 data1, data2, ... 来表示第一条件列、第二条件列, ...第n条件列
参数6 | 以冒号分隔的单元格区域，数据区, 必须为单列
返回值 | 值
示例 | =sumif(A2:A20, C2:C20, "data1>200 and data2>300", E2:E20); //A2到A20区域内，数值大于200的，同时 C2:C20区域内数值大于300的行，对E2:E20对应行内容求和。 这是另一个例子： 计算结果是 10.

countif | 按条件求单元格数, 用法请参考上面的 "sumif(语法一)、sumif(语法二)、sumif(语法三)" |

averageif | 按条件求平均值, 用法请参考上面的 "sumif(语法一)、sumif(语法二)、sumif(语法三)" |

maxifs | 按条件求最大值, 用法请参考上面的 "sumif(语法一)、sumif(语法二)、sumif(语法三)" |

minifs | 按条件求最小值, 用法请参考上面的 "sumif(语法一)、sumif(语法二)、sumif(语法三)" |

phonetic | 把单元格内容作为字符串合并相加 |
参数1 | 单元格名:单元格名
参数2 | 可选, 格式为 isIgnoreBlank=[?];isTrim=[?];Sep=[?], 含义如下: isIgnoreBlank - 是否忽略没有内容的单元格, 默认是 true; isTrim - 是否自动除去前导、尾随的空格, 默认是 true; Sep - 分隔符, 字符串, 默认没有分隔符, 注: Sep必须位于选项的末尾, Sep= 后面的内容全部是分隔符;
返回值 | 字符串
示例 | =phonetic(C4:@C4) //C列的数据源填充区域字符串合并 =phonetic(C4:C18, "isTrim=false; sep=, ") //C4:C18之间的区域字符串合并、保留前导尾随空格、分隔符为 ", "

pages | 总共打印页数 |
参数 | (无)
返回值 | 总页数
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

page | 当前打印页 |
参数 | (无)
返回值 | 页码，从1开始计数
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

pageBatch | 在批打印中的当前打印页 |
参数 | (无)
返回值 | 页码，从1开始计数
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

pagesBatch | 批打印的总页数 |
参数 | (无)
返回值 | 页数，或最大页码
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

vPages | 纵向分页数 |
参数 | (无)
返回值 | 数字
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

vPage | 纵向的当前分页 |
参数 | (无)
返回值 | 页码，从1开始计数
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

hPages | 横向分页数 |
参数 | (无)
返回值 | 数字
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

hPage | 横向的当前分页 |
参数 | (无)
返回值 | 页码，从1开始计数
备注 | 在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮)

PageSum | 分页小计 (打印页) |
参数 | 列名串
返回值 | 数字
备注 | 1.在打印或预览时，插件内部会发起一个微小的页码处理计算，计算该函数，它并不参与常规的计算(例如点击“计算”按钮); 2.本函数通常写在页尾区； 3.统计范围自动选取数据源填入区
示例 | =pageSum('D'); //对 D 列内容求本页小计

dataRow | 顺序填入数据源中的数据行 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | (无)
示例 | =dataRow('ds1'); //表示在此处开始填入'ds1'数据源的数据 =dataRow('ds1\\node1'); //表示在此处开始填入'ds1'XML数据源中node1节点的数据

headRow | 填入数据源的标题行 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | (无)
示例 | =headRow('ds1')，表示本行从本单元格开始填入'ds1'数据源的列标题

data | 取得数据源中的单个数据 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 行号(从1开始计数)
参数3 | 列号或列名
参数4 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | 数据源中的数据
示例 | =data('ds1', 1, 'price')，表示本单元格(或本文本框)填入'ds1'数据源第一行、price列的数据

head | 取得数据源的单个标题 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 列号或列名
参数3 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | 标题串

search | 从数据源中搜索 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 表达式串
参数3 | 列号或列名，或者是 "列名@宏" 这样的格式，表示对搜索结果作统计，“宏” 通常是 @sum, @ave, @max, @rows...这些, 请参见下方的示例
参数4 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | 结果串
备注 | 是指从数据源缓存中的搜索
示例 | =search("ds1", "left(company,3)=='Lev'", "price") //取满足条件的第一条记录的 price 列的数据 =search("ds1", "left(company,3)=='Lev' && classField=" + B5, "price@sum") //取满足条件的 price 列的数据之和

dataRows | 取得数据源总行数 |
参数1 | 数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名
参数2 | 可选, 可跟随多个参数, 具体的参数由数据源规定
返回值 | 数字

dataRowNumber | 填入数据源中的行号 |
参数 | (无)
返回值 | (无)
备注 | 备注：同一行中，应该有包含dataRow( )函数的单元格