官方文档

函数汇总

复杂报表日期、数学、文本、报表函数一览,含说明和示例。

复杂报表单元格公式里可以直接调用下列函数。写法是 函数名(参数),函数名不区分大小写。单元格引用、加减乘除和 if 见 表达式;按扩展行取上月、同年见 层次坐标。

参数里的「日期」可以是日期单元格,或 "2010-01-01"、"2010-01-01 00:00:00" 这样的文字。带千分位的金额在做除法时,请用层次坐标取原始数字,见层次坐标文档。

1. 日期函数

函数说明示例
NOW()当前日期时间,默认格式 yyyy-MM-dd HH:mm:ss。传入格式文字时按该格式输出。NOW()
NOW("yyyy-MM-dd")
YEAR(日期)年份,四位数字。YEAR("2010-03-15") → 2010
MONTH(日期)月份,1 到 12。MONTH("2010-03-15") → 3
DAY(日期)日,1 到 31。DAY("2010-03-15") → 15
WEEK(日期)该日期在一年中的第几周。WEEK(A3)
WEEKDAY(日期)星期。返回 1 到 7:1 是星期日,2 是星期一,……,7 是星期六。WEEKDAY("2010-01-03")
FORMAT(日期)把日期格式化成文字。不写格式时为 yyyy-MM-dd HH:mm:ss。FORMAT(A3, "yyyy-MM")
EDATE(起始日期, 月数)起始日期加减若干月,结果为 yyyy-MM-dd。正数向后,负数向前。月末日期会落到目标月的最后一天。EDATE("2010-01-31", 1) → 2010-02-28
YEAR_OFFSET_DATE(年偏移, 月, 日)以今年为基准偏移年份,再取指定的月、日,结果为 yyyy-MM-dd。YEAR_OFFSET_DATE(0, 1, 1) 今年 1 月 1 日
YEAR_OFFSET_DATE(-1, 12, 31) 去年 12 月 31 日
GETYEARDAY(日期时间, 第几天)取第一个参数里的年份,返回该年的第 N 天,格式 yyyy-MM-dd。日期时间须写成 yyyy-MM-dd HH:mm:ss。GETYEARDAY("2010-01-01 00:00:00", 32) → 2010-02-01

2. 数学函数

函数说明示例
SUM(区域)求和。常配合层次坐标只加同一组。SUM(D3[])
SUM(D3[]{A3==A3}) 当年合计
AVG(区域)平均值。AVG(D3[]{A3==A3})
COUNT(区域)个数。可用来做排名:比当前值大的个数 + 1。COUNT(D3[]{D3>D3[B3:-0]}) + 1
MAX(区域)最大值。MAX(D3[]{A3==A3})
MIN(区域)最小值。MIN(D3[])
ABS(数值)绝对值。ABS(-12) → 12
CEIL(数值)向上取整。CEIL(1.2) → 2
FLOOR(数值)向下取整。FLOOR(1.8) → 1
ROUND(数值)四舍五入到整数。没有「保留几位小数」的第二个参数。要保留小数,请用单元格格式。ROUND(1.5) → 2
POWER(底数, 指数)乘幂。指数按整数使用。POWER(2, 3) → 8
SQRT(数值)平方根。参数须为正数。SQRT(9) → 3
EXP(数值)e 的乘幂。EXP(1)
LOG(数值)自然对数(以 e 为底)。LOG(10)
LOG10(数值)以 10 为底的对数。LOG10(100) → 2
SIN(弧度)正弦。SIN(0) → 0
COS(弧度)余弦。COS(0) → 1
TAN(弧度)正切。TAN(0) → 0
MEDIAN(区域)中位数。MEDIAN(D3[])
MODE(区域)众数。MODE(D3[])
VARP(区域)总体方差。VARP(D3[])
STDEVP(区域)总体标准差。STDEVP(D3[])
CN(数值)数字转中文大写数字(壹、贰、叁,含拾、佰、仟)。CN(123)
CNY(数值)数字转人民币大写,带圆、角、分。整数带「整」。CNY(123.4)
UUID()生成一个 UUID 文字。UUID()

RAND、NUMTOZH 目前没有计算结果,不要写进报表。随机数请在数据集里生成;数字转中文用 CN 或 CNY。

3. 文本函数

函数说明示例
CONCAT(值1, 值2, …)把多个值拼成一段文字。CONCAT(B3, "月份") → 1月份
JOIN(分隔符, 值1, 值2, …)用分隔符拼接。第一个参数是分隔符。JOIN("-", A3, B3) → 2010-1
TRIM(文本)去掉首尾空格。TRIM(" 华东 ") → 华东
LENGTH(文本)字符个数。LENGTH("月份") → 2
LOWER(文本)转小写。LOWER("AbC") → abc
UPPER(文本)转大写。UPPER("AbC") → ABC
SUBSTRING(文本, 开始, 结束)截取。下标从 0 开始,含开始、不含结束。只写开始时,截到末尾。SUBSTRING("2010-01", 0, 4) → 2010
INDEXOF(文本, 查找)查找第一次出现的位置,从 0 开始。找不到返回 -1。第三个参数是开始找的位置。INDEXOF("2010-01", "-") → 4
REPLACE(文本, 原文字, 新文字)替换。三个参数都要写。REPLACE(C3, "月份", "月")
STARTS_WITH(文本, 前缀)是否以前缀开头,返回 true 或 false。STARTS_WITH("2010-01", "2010")
ENDS_WITH(文本, 后缀)是否以后缀结尾。ENDS_WITH("1月份", "月份")
QUERY(JSON文字, 属性名)从 JSON 文字里取一个属性。两个参数都要写。QUERY("{\"name\":\"华东\"}", "name") → 华东

4. 报表函数

函数说明示例
PAGENUM()当前页码。PAGENUM()
PAGECOUNT()总页数。CONCAT("第", PAGENUM(), "/", PAGECOUNT(), "页")
ROW()当前单元格所在行号。ROW()
COL()当前单元格所在列号。COL()
SEQ()扩展后的序号,从 1 开始。SEQ(扩展格) 按该格的扩展次序编号。SEQ(A3)
ORDER(区域, 正序)把一组值排序后返回。第二个参数 true 从小到大,false 从大到小。ORDER(D3[], true)
SORT(单元格, 降序, 不跳号)当前格子在同一批扩展值里的排名。第二个参数 true 从大到小,false 从小到大。第三个参数 true 名次不跳号(并列都占同一个名次,下一名紧接),false 跳号。只写这三个参数。按年份、部门分组的排名用 COUNT,见 同比环比示例。SORT(D3, true, true)

5. 和显示格式配合

  • 百分比:公式写比值(本月 / 上月),单元格格式选百分比、0%。不要在公式里再乘 100。0.17 会显示成 17%,1.70 会显示成 170%。
  • 金额:格式选数值、#,##0。这种格式只影响显示。其他格子要拿这个金额做除法时,用层次坐标取数,例如 D3[B3:-0],不要直接写已格式化的 D3。
  • 空结果:公式里写 null,预览该格为空白。适合「1 月没有环比」。