计算公式

一些要点

数值

操作符

操作符(Operator) 描述(Description) 例子(Examples)
+ 加法运算。 1 + 1 => 2
- 减法运算。 2 - 1 => 1
* 乘法运算。 2 * 3 => 6
/ 除法运算。 4 / 2 => 2
% 百分比。 5 % 2 => 1
^ 求幂。 2^3 => 8
= 等于。 2 = 3 => false
\<> 不等于。 2 \<> 3 => true
> 大于。 3 > 3 => false
>= 大于等于。 3 >= 3 => true
\< 小于。 3 \< 3 => false
\<= 小于等于。 3 \<= 3 => true

函数

函数(Function) 描述(Description) 例子(Examples)
ABS(number) 返回一个数的绝对值。 abs(-2) => 2
ADD(number1, number2) 计算两个值的和。 add(2, 3) => 5
CEILING(number, __[__significance]) 将数字向上舍入到最接近的整数或最接近的指定基数的倍数。(如果任何一个参数是非数值型,则 CEILING 返回空。 不论参数 number 的符号如何,数值都是沿绝对值增大的方向向上舍入。 如果 number 正好是 significance 的倍数,则不进行舍入。 如果 number 和 significance 都为负,则对值按远离 0 的方向进行向下舍入。 如果 number 为负,significance 为正,则对值按朝向 0 的方向进行向上舍入。) ceiling(4, 1.5) => 4.5; ceiling(-2.5, -0.2) => -2.6; ceiling(2.5, -0.2) => ""; ceiling(3.5) => 4
DIVIDE(number1, number2) 计算两个数相除。 divide(2, 3) => 0.66666667
E 自然数 (e)。 e => 2.71828183
EQUAL(number1, number2) 等于。 equal(1, 2) => false
EVEN(number) 将正数向上舍入到最近的偶数,负数向下舍入到最近的偶数。 even(3) => 4
EXP(number) 返回 e 的 n 次方。 exp(1) => 2.71828183
_FLOOR(number, __[__significance]) _ 将数字向下舍入到最接近的整数或最接近的指定基数的倍数。(如果任一参数为非数值型,则 FLOOR 返回 空 。 如果 number 为正值且指定的基数为负,则 FLOOR 返回 空 。 如果 number 的符号为正,则数值向下舍入,并朝零调整。 如果 number 的符号为负,则数值沿绝对值减小的方向向下舍入。 如果 number 正好是 significance 的倍数,则不进行舍入。) floor(4, 1.5) => 3; floor(-2.5, -0.2) => -2.4; floor(2.5, -0.2) => ""; floor(3.5) => 3
GREATER(number1, number2) 判断一个数是否大于另一个数。 greater(2, 3) => false
GREATEREQ(number1, number2) 判断一个数是否大于等于另一个数。 greatereq(3, 2) => true
INT(number) 将数值向下取整为最接近的整数。 INT(3.2) => 3
LESSTHAN(number1, number2) 判断一个数是否小于另一个数。 lessthan(2, 3) => true
LESSTHANEQ(number1, number2) 判断一个数是否小于等于另一个数。 lessthaneq(2,3) => true
_LG(number) _ 返回给定数值以 10 为底的对数。 lg(100) => 2
LN(number) 返回给定数值的自然对数。 ln(E) => 1
LOG(number, __[__base]) 根据给定底数返回数字的对数。 log(100) => 2; LOG(8, 2) => 3
MOD(number1, number2) 返回两数相除的余数。 mod(2, 3) => 2
MULTIPLY(number1, number2) 计算两个数的乘积。 multiply(2, 3) => 6
ODD(number) 将正(负)数向上(下)舍入到最接近的奇数。 odd(2.3) => 3
_PI _ 圆周率(π)。 pi => 3.14159265
POWER(base, number) 返回某数的乘幂。 power(3, 2) => 9
ROUND(number, __[__num_digits]) 按指定的位数对数值进行四舍五入。(如果 num_digits 大于 0(零),则将数字四舍五入到指定的小数位。 如果 num_digits 等于 0,则将数字四舍五入到最接近的整数。 如果 num_digits 小于 0,则在小数点左侧前几位进行四舍五入。) round(3.1415923, 3) => 3.142;round(3.1415923, -3) => 0; round(999.1415923, -3) => 1000
ROUNDDOWN(number, __[__num_digits]) 向下舍入数字。(如果 num_digits 大于 0(零),则将数字向下舍入到指定的小数位。 如果 num_digits 等于 0,则将数字向下舍入到最接近的整数。 如果 num_digits 小于 0,则在小数点左侧前几位进行向下舍入。) rounddown(3.1415923, 3) => 3.141; rounddown(999.1415923, -3) => 0
ROUNDUP(number, __[__num_digits]) 向上舍入数字。(如果 num_digits 大于 0(零),则将数字向上舍入到指定的小数位。 如果 num_digits 等于 0,则将数字向上舍入到最接近的整数。 如果 num_digits 小于 0,则在小数点左侧前几位进行向上舍入。) roundup(3.1415923, 3) => 3.142; roundup(345.1415923, -3) =>1000
SIGN(number) 返回数字的正负号: 为正时,返回 1;为零时,返回 0;为负时,返回 -1。 sign(-2) => -1
SQRT(number) 返回某数的平方根。 sqrt(4) => 2
SUBTRACT(number1, number2) 计算两个值的差。 subtract(2, 3) => -1
SUM(number1, __[__number2, ...]) 计算一组值的和。 sum(1, 2, 3) => 6
UNEQUAL(number1, number2) 不等于。 unequal(1, 2) => true

文本

操作符

操作符(Operator) 描述(Description) 例子(Examples)
& 将多个文本值连接为单个文本值。 "SeaTable" & " is" & " very" & " good." => "SeaTable is very good."

函数

函数(Function) 描述(Description) 例子(Examples)
CONCATENATE(string1, __[__string2, ...]) 将多个文本值连接为单个文本值。 concatenate('Sea', 'Table') => 'SeaTable'
EXACT(string1, string2) 返回两个数字符串是否相等。 exact('SeaTable', 'SeaTable') => true
FIND(findString, sourceString, startPosition) 获取在一个字符串在另一个字符串中的索引。如果找不到,那么返回 0。(区分大小写)。 find('sea', 'SeaTable', 1) => 0
LEN(string) 返回字符串的长度。 len(“SeaTable”) => 8
LEFT(string, count) 从一个文本字符串的第一个字符开始返回指定个数的字符。 left("SeaTable", 3) => Sea
LOWER(string) 将字符串转换为小写。 lower("SeaTable") => seatable
MID(string, startPosition, count) 从文本字符串中指定的起始位置起返回指定长度的字符。 mid("SeaTable is very good.", 1, 8 ) => SeaTable; mid("SeaTable is very good.", -1, 8 ) => #value! ; mid("SeaTable is very good.", 1.2, 8 ) => "SeaTable"
REPLACE(sourceString, startPosition, count, replacementText) 将一个字符串中的部分字符用另一个字符串替换。 replace("SeaTable is very good.", 1, 8, "Seafile") => Seafile is very good.
REPT(string, number) 将字符串重复 nunber 次。 rept("Sea", 3) => "SeaSeaSea"
RIGHT(string, count) 从一个文本字符串的最后一个字符开始返回指定个数的字符。 right("SeaTable is very good.", 5) => good.
SEARCH(findString, sourceString, startPosition) 返回一个指定字符或文本字符串在字符串中第一次出现的位置,从左到右查找(忽略大小写)。 search("sea","SeaTable",,1) => 1
SUBSTITUTE(sourceString, oldString, newString, __[__index]) 将字符串中的部分字符串以新字符串替换。 substitue("SeaTableTable", "Table", "file", 0) => Seafilefile
T(value) 检测给定值是否为文本,如果是文本按原样返回,如果不是文本则返回空文本。 T("123") => "123"; T(123) => ""
TEXT(num, __[__format_text]) 根据指定的数值格式将数字转成文本。格式参数 format_text 可以为 number, percent, yuan, dollar, euro 中的一个。 text(123, "dollar") = "$123.00";text(123)="123"
TRIM(string) 移除字符串两端的空格。 trim(" SeaTable ") => "SeaTable"
UPPER(string) 将字符串转换为大写。 upper("SeaTable") => "SEATABLE"
VALUE(string) 将一个代表数值的文本字符串转换成数值。 value("123") => 123

日期与时间

操作符

** +**
描述(Description)
日期 + 数字 返回 X 天之后的日期
日期 + 时长类型 返回 X 时长之后的日期
-
描述(Description)
日期 + 数字 返回 X 天之前的日期
日期 - 时长类型 返回 X 时长之前的日期
日期 - 日期 两日期之间相差的天数
>、>=、********\<******、**********\<******=、=、********\<********>**
情况 描述(Description)
日期 与 日期 按时间先后顺序

函数

函数(Function) 描述(Description) 例子(Examples)
DATEADD(date, count, unit) 增加时间。最后一个参数 unit 可以为 years, months, weeks, days, hours, minutes, seconds 中的一个。 dateAdd("2020-02-03", 2, "years") = 2022-02-03; dateAdd("2020-02-03 08:00", -2, "years") = 2018-02-03 08:00
DATEDIF(startDate, endDate, unit) 计算两个日期之间相隔的秒数、天数、月数或年数。参数 unit 可以为 S, Y, M, D, YD, YM, MD. 中的一个。 dateDif("2020-01-01", "2020-01-02") = 86400 ;dateDif("2020-01-01", "2020-01-02", "S") = 86400 ;dateDif("2018-01-01", "2020-01-01", "Y") = 2 ;dateDif("2020-11-11", "2020-12-12", "M") = 1 ;dateDif("2019-06-01", "2020-08-15", "D") = 441 ;dateDif("2019-06-01", "2020-08-15", "YD") = 75 ;dateDif("2019-06-01", "2020-08-15", "YM") = 2 ;dateDif("2019-06-01", "2020-08-15", "MD") = 14
DAY(date) 返回一个月中的第几天的数值,介于 1 到 31 之间。 day("2020-01-03") => 3
DAYS(startDate, endDate) 返回两个日期之间的天数。 days("2020-01-01", "2020-02-03") => 33
EOMONTH(startDate, months) 返回一个日期,表示指定日期之前或之后的几个月的最后一天。 eomonth("2020-01-01", -1) = 2019-12-31;eomonth("2020-01-01", 1) = 2020-02-29
HOUR(date) 返回小时数值,是一个 0 (12:00 A.M.) 到 23 (11:00 P.M.) 之间的整数。 hour("2020-02-14 13:14:52") = 13
HOURS(startDate, endDate) 返回两个日期之间的小时数。 hours("2020-02-14 13:14", "2020-02-14 15:14") = 2
MINUTE(date) 返回分钟数值,是一个 0 到 59 之间的整数。 minute("2020-02-14 13:14:52") => 14
MONTH(date) 返回月份值,是一个 1 (一月)到 12 (十二月)之间的数字。 month("2020-02-14 13:14:52") => 2
MONTHS(startDate, endDate) 返回两个日期之间的月数。 months("2020-02-14 13:14", "2020-02-14 15:14") = 0
NETWORKDAYS(startDate,endDate,holiday1, __[__holiday2, ...]) 返回两个日期之间的完整工作日数。 networkdays("2020-01-01", "2020-01-07","2020-01-01") => 4
NOW() 获取现在的时间。 now() => 2020-02-14 13:14
SECOND(date) 返回秒数值,是一个 0 到 59 之间的整数。 second("2020-02-14 13:14:52") => 52
TODAY() 获取今天的日期。 today() => 2019-12-14
WEEKDAY(date, __[__weekStart]) 返回代表一周中的第几天的数值,是一个 1 到 7 之间的整数。 weekday("2020-01-01", "Monday") => 3
WEEKNUM(date, __[__weekStart]) 返回一年中的周数。 weeknum("2020-01-13", "Monday") = 3
ISOWEEKNUM(date) 返回给定日期的一年的 ISO 周编号。 isoweeknum("2020-01-13") = 3
YEAR(date) 返回日期的年份值,一个 1900-9999 之间的数字。 year("2020-01-01") => 2020

统计

函数(Function) 描述(Description) 例子(Examples)
AVERAGE(number1, __[__number2, ...]) 返回一组数的平均值。 averge(1, 2, 3, 4, 5) => 3
COUNT(textOrNumber1, __[__textOrNumber2, ...]) 计算一组数中有效数字的个数。 count(1, '', 2, '3') => 2
COUNTA(textOrNumber1, __[__textOrNumber2, ...]) 计算一组值中非空值的个数。非空值包括数字和字符串。 counta(1, '', 2, '3' ) => 3
COUNTALL(textOrNumber1, __[__textOrNumber2, ...]) 计算一组值的个数 (包括空值)。 countall(1, '', 2, 3) => 4
COUNTBLANK(textOrNumber1, __[__textOrNumber2, ...]) 计算一组值中空值的个数。 countblank(1, '', 2, 3, '') => 2
COUNTLTEMS("column-name") 计算列中的项目数。支持的列类型是多选、协作人、文件、图片列。 countlems("图片")
Large(number1, number2, ..., k) 返回给定数字的第 k 个最大值。 large(1, 2, 3, 4, 2) = 3
MAX(number1, __[__number2, ...]) 返回一组数的最大值。 max(1, 3, 4, 2, -1) => 4
MIN(number1, __[__number2, ...]) 返回一组数的最小值。 min(1, 3, 4, 2, -1) => -1
Small(number1, number2, ..., k) 返回给定数字的第 k 个最小值。 small(1, 2, 3, 4, 2) = 2

逻辑

函数(Function) 描述(Description) 例子(Example)
AND(value1, __[__value2, ...]) 检查是否所有参数均为 TRUE,如果所有参数值均为 TRUE,则返回 TRUE。 and(1, '', 2) => false
FALSE() 返回逻辑值 FALSE。 false() => false
IF(logical, value1, value2) 判断是否满足某个条件,如果满足返回一个值,如果不满足则返回另一个值。 if(1 > 2, 1, 2)
NOT(boolean) 对参数的逻辑值求反: 参数为 TRUE 时返回 FALSE;参数为 FALSE 时返回TRUE not(true()) => false
_OR(value1, __[__value2, ...]) _ 如果任一参数值为 TRUE,即返回 TRUE;只有当所有参数值均为 FALSE 时才返回 FALSE。 or(1, "", false()) = true
TRUE() 返回逻辑值 TRUE。 true() => true
SWITCH(logical, matcher1, value1, matcher2, value2, default) 根据值列表求值表达式并返回与第一个匹配值对应的结果。如果没有匹配项,则返回可选默认值 switch(INT(68/10), 6, "so so", 7, "good", 8, "nice", 9, "excellent", 10, "best", "failed") = "so so"
XOR(value1, __[__value2, ...]) 返回所有参数的逻辑“异或”值。 xor(1, "", 2, "", 3) = true

链接函数

函数(Function) 描述(Description) 例子(Example)
Link.columnName 返回另一个表中所链接行的“{column_name}”列的值。如果关联多个行,那么返回第一个行的“{column_name}”列的值。
LOOKUP(FINDMAX("link-column-name", "column-name-for-comparison"), "column-name-in-linked-record") 用 findMax 在被链接的记录中找出指定字段有最大值的一条记录,然后用 lookup 函数显示这个记录的某个字段。 lookup(findmax("column1", "column2"), "column3")
LOOKUP(FINDMIN("link-column-name", "column-name-for-comparison"), "column-name-in-linked-record") 用 findMin 在被链接的记录中找出指定字段有最小值的一条记录,然后用 lookup 函数显示这个记录的某个字段。 lookup(findmin("column1", "column2"), "column3")
ROLLUP("link-column-name", "column-name-in-linked-record", summary, __[__condition]) 返回另一个表中所链接行的归总值。参数 summary 可以为 average, concatenate, count, max, min, sum 中的一个。可选参数condition可用于过滤记录。 rollup("column1", "column2", "average", "{column3} = 'Cleaning'")
COUNTLINKS("link-column-name") 计算链接记录的数量。 countlinks("column1")

高级

多个操作符

3 *3 - 3 => 6

操作符和函数的混用

SUM(1, 2, 3) * 3 / 3 - 2 => 4

SUM(1, 2, 3) * 3 / 3 - {列名}

函数的嵌套运算

ABS(SUM(-20, -200, 3)) => 217

Last modified by seatable, 2022-08-01

一些要点
数值
文本
日期与时间
统计
逻辑
链接函数
高级
多个操作符
操作符和函数的混用
函数的嵌套运算