日期函数
公式名称 | 公式函数 | 参数 | 示例 |
DATE 函数 | DATE(年, 月, 日) 将代表年、月、日的数字转换为日期 |
| DATE(2000,01,01)=2000/01/01 |
DATEDIF 函数 | DATEDIF(起始日期, 结束日期, 单位) 返回起始日期和结束日期之间的天数、月数或年数 |
| DATEDIF("2000-01-01","2000-01-08","D")=7 |
DAY 函数 | DAY(日期值) 以数字格式返回特定日期的日 |
| DAY("2000-01-03")=3 |
DAYS 函数 | DAYS(结束日期, 起始日期) 返回起始日期与结束日期之间的天数 |
| DAYS("2000-01-08","2000-01-01")=7 |
EOMONTH 函数 | EOMONTH(开始日期,月数) 返回与开始日期相隔数月的某个月份最后一天的序列号 |
| EOMONTH("2000-1-1", 1)=2000/2/28 EOMONTH("2000-3-1", -1)=2000/02/29 |
HOUR 函数 | HOUR(时间) 以数字格式返回特定时间的小时部分 |
| HOUR("11:40:59")=11 |
MINUTE 函数 | MINUTE(时间) 以数字格式返回特定时间的分钟部分 |
| MINUTE("11:40:59")=40 |
MONTH 函数 | MONTH(日期值) 以数字格式返回特定日期对应的月份 |
| MONTH("2000-12-01")=12 |
NETWORKDAYS 函数 | NETWORKDAYS(起始日期, 结束日期, [节假日]) 返回起始日期和结束日期之间的净工作日天数 |
| NETWORKDAYS("2000-01-01","2000-01-12")=8 |
NOW 函数 | / | NOW()=2000/01/01 00:00 | |
SECOND 函数 | SECOND(时间) 以数字格式返回特定时间的秒钟部分 |
| SECOND("11:40:59")=59 |
TODAY 函数 | TODAY() 返回当天的日期 | / | TODAY()=2000/01/01 |
WEEKDAY 函数 | WEEKDAY(日期值, [类型]) 返回目标日期在当周的第几天,结果以数字形式显示 |
| WEEKDAY("2000-01-01")=7 |
WEEKNUM 函数 | WEEKNUM(日期, [类型]) 返回目标日期在当前年份的第几周 |
| WEEKNUM("2000-01-01")=1 |
WORKDAY 函数 | WORKDAY(起始日期, 天数, [节假日]) 指定起始日期和所需要的工作日天数,返回结束日期 |
| WORKDAY("2000/01/01",7)=2000/01/11 |
YEAR 函数 | YEAR(日期值) 以数字格式返回给定日期所指定的年份 |
| YEAR("2000-01-01")=2000 |
DURATION 函数 | DURATION(天数, [小时数], [分钟数], [秒数]) 生成指定时长,给已有日期加上或减去该时长,可以计算出新的日期 |
| 案例:当前时间加上 12 小时后的新日期 函数:NOW()+DURATION(0, 12)=2023/06/05 22:00 案例:前天晚上 9 点半的日期 函数:TODAY()-DURATION(1, 2, 30)=2023/06/03 21:30 |
逻辑函数
公式名称 | 公式函数 | 参数 | 示例 |
AND 函数 | AND(逻辑表达式1, [逻辑表达式2, ...]) 当所有参数均为逻辑 TRUE 时,返回 TRUE;当参数中任何一个为逻辑 FALSE,返回 FALSE |
| AND(1=1,1=2)=false |
CONTAIN 函数 | CONTAIN(查找范围, [要查找的值, ...]) 判断查找范围是否包含要查找的内容 注:本函数不支持文本包含匹配,如有需要请使用 CONTAINTEXT 函数 | 案例:如果销售地为日本或韩国,则标记为亚太市场 函数:IF(CONTAIN([销售地],"韩国","日本"),"亚太市场","其他") | |
FALSE 函数 | FALSE() 返回逻辑值 FALSE | / | FALSE()=false |
IF 函数 | IF(判断条件, 为 TRUE 时的返回值, [为 FALSE 时的返回值]) 当判断条件为 TRUE 时返回一个值,为 FALSE 时返回另一个值 |
| IF(1=2, "相同", "不相同")=不相同 |
IFBLANK 函数 | IFBLANK(值, 空值情况的返回值) 检查目标值是否为空,非空时返回该值本身,否则返回第二个参数的值 | IFBLANK([成员姓名], "未填写")=成员姓名 注:若成员姓名为空,则返回结果为“未填写”。 | |
IFERROR 函数 | IFERROR(值, 错误情况的返回值) 检查目标值是否错误,没有错误时返回该值本身,否则返回第二个参数的值 | IFERROR([数据], "错误") 注:当数据没有错误时,返回数据字段中本身的值,结果错误时,返回自定义结果。 | |
IFS 函数 | IFS(条件1, 值1, [条件2, ...], [值2, ...]) 判断是否满足一个或多个条件并返回第一个 TRUE 条件对应的结果 | IFS(A>=80,"优秀",A>=60,"及格",TRUE,"不及格") 注:如果 A 的值大于 80,则返回结果“优秀”;如果 A 的值大于 60,则返回结果“及格”,其他情况,则返回结果“不及格”。 | |
ISBLANK 函数 | ISBLANK(值) 检查目标值是否为空值,为空时结果为 true,否则为 false |
| 案例:判断成员姓名中是否有空值 函数:ISBLANK([成员姓名]) |
ISERROR 函数 | ISERROR:检查某个值是否为错误值 |
| ISERROR([数据]) 注:当数据错误,返回对应的结果 true,数据正确时,返回 false。 |
NOT 函数 | NOT(逻辑函数) 对其参数的逻辑求反 |
| NOT(TRUE)=false |
OR 函数 | OR(逻辑表达式1, [逻辑表达式2, ...]) 只要提供的参数中任何一个为逻辑真就返回 TRUE,如果提供的所有参数均为逻辑假则返回 FALSE |
| OR(1=2, 1=1)=true |
RECORD_ID函数 | RECORD_ID() 获取多维表格记录的唯一 ID 编号 | / | RECORD_ID() |
SWITCH 函数 | SWITCH(表达式, 表达式1, 表达式1的值, [表达式2或默认值, ...], [表达式2的值, ...]) 通过与表达式进行比较,按命中条件返回相应的值 注:SWITCH 函数的结果不能是数组 |
| SWITCH([序号],1,"周日",2,"周一",3,"周二","无") 注:如果序号为 1,则返回结果为“周日”,如果序号为 2,则返回结果为“周一”,如果序号为 3,则返回结果为“周二”,其余情况,返回结果均为“无”。 |
TRUE 函数 | TRUE() 返回逻辑值 TRUE | / | TRUE()=true |
CONTAINSALL 函数 | CONTAINSALL(查找范围,[要查找的值,...]) 判断查找范围是否包含所有要查找的内容 |
| IF(所选科目.CONTAINSALL("微观经济学","高等数学","大学英语"),"符合要求","有必选科目未选") 注:如果“所选科目”包含“微观经济学”、“高等数学”、“大学英语”这些科目,则返回结果为“符合要求”,否则返回结果为“有必选科目未选”。 |
CONTAINSONLY 函数 | CONTAINSONLY(查找范围,[要查找的值,...]) 判断查找范围是否仅包含所有要查找的内容 |
| 案例:检查多选题答案是否仅包含正确选项,不能多,不能少 函数:IF(学生答案.CONTAINSONLY("A","B","C"),"正确","错误")=正确 |
ISNULL 函数 | ISNULL(值) 检查目标值是否为空值,为空时结果为 true,否则为 false |
| ISNULL(字段1) 注:如果 字段1 为空值,则返回 true,否则返回 false。 |
RANDOMBETWEEN 函数 | RANDOMBETWEEN(最小整数,最大整数,[是否持续更新]) |
| 案例:生成介于 1 和 10 之间的随机整数 函数:RANDOMBETWEEN(1,10) |
RANDOMITEM 函数 | RANDOMITEM(列表, [是否持续更新]) 从列表中随机选择一个元素 | 列表:一组数据或者是多维表格中的一个字段 [是否持续更新]:如果为 TRUE,则每次记录更新时都会生成一个新的随机项;如果为 FALSE,则只生成一次。默认值为 TRUE | 案例:从人员表的姓名字段中随机抽取一个 函数:人员表.姓名.RANDOMITEM()=小王 案例:随机抽取午餐吃什么 函数:LIST("炸鸡", "牛肉面", "披萨", "麻辣香锅", "汉堡").RANDOMITEM()=披萨 |
文本函数
公式名称 | 公式函数 | 参数 | 示例 |
CHAR 函数 | CHAR(数字) 返回数字代码所对应的 Unicode 字符 |
| 案例:换行符号 函数:CHAR(10)=\n |
CONCATENATE 函数 | CONCATENATE(字符串1, [字符串2, ...]) 将多个字符串串联 |
| CONCATENATE("多维", "表格")=多维表格 |
CONTAINTEXT 函数 | CONTAINTEXT(文本, 查找文本) 判断文本中是否包含要查找的部分文本 |
| CONTAINTEXT("多维表格","表格")=true |
FIND 函数 | FIND(查找的值, 查找范围, [起始位置]) 从指定位置开始查找特定的值,并返回其第一次出现的位置;若该值不存在,返回 -1 | FIND("维", "多维表格")=2 | |
HYPERLINK 函数 | HYPERLINK(链接地址, [显示文本]) 在单元格创建超链接,快捷跳转至目标地址 |
| HYPERLINK("https://www.com/","多维表格") |
LEFT 函数 | LEFT(字符串, [字符数]) 返回从指定字符串开头提取的子串 |
| LEFT("多维表格", 2)=多维 |
LEN 函数 | LEN(文本) 返回指定的字符串的长度 |
| LEN("多维表格")=4 |
LOWER 函数 | LOWER(文本) 将指定字符串中的字母转换为小写 |
| LOWER("ABC")=abc |
MID 函数 | MID(字符串, 开始位置, 提取长度) 返回字符串中从指定位置开始的特定数目的字符 |
| MID("多维表格", 1, 2)=多维 |
REPLACE 函数 | REPLACE(文本, 位置, 长度, 新文本) 将文本字符串的一部分替换为其他文本字符串 |
| REPLACE("abcdefg", 1, 6, "xyz")=xyzg |
RIGHT 函数 | RIGHT(字符串, [字符数]) 返回从指定字符串尾部提取的子串 |
| RIGHT("多维表格", 2)=表格 |
SUBSTITUTE 函数 | SUBSTITUTE(要替换部分字符的文本, 被替换文本, 替换文本, [被替换文本序号]) 将现有文本中的部分内容替换为新的文本 |
| SUBSTITUTE("abcdefg", "cde", "xyz", 1)=abxyzfg |
SPLIT 函数 | SPLIT(文本, 分隔符) 使用分隔符对文本进行分割 |
| 案例:使用1个分隔符(单个字符)分割文本 函数:SPLIT("a,b,c", ",")="a", "b", "c" 案例:使用1个分隔符(多个字符)分割文本 函数:SPLIT("a--c", "--")="a", "c" 案例:使用换行符分割文本 函数:SPLIT([包含换行符的字段], char(10)) |
TEXT 函数 | TEXT(值, 格式) 按照指定格式将数字转换为文本 |
| TEXT("2021-01-01", "ddd")=周五 |
TODATE 函数 | TODATE(文本) 将文本转成日期格式 |
| 案例:将“年-月-日”格式的文本转换为日期值 函数:TODATE("2023-6-5")=2023/06/05 00:00 |
TRIM 函数 | TRIM(文本) 移除文本中的前导、结尾和重复空格 |
| TRIM(" abc abc ")=abc abc |
UPPER 函数 | UPPER(文本) 将指定字符串中的字母转换为大写 |
| UPPER("abc")=ABC |
ENCODEURL 函数 | ENCODEURL(文本) 根据给定的文本返回 URL 编码的字符串,将某些非字母数字字符替换为百分比符号 (%) 和十六进制数字 |
| ENCODEURL("多维表格") =%E5%A4%9A%E7%BB%B4%E8%A1%A8%E6%A0%BC |
FORMAT 函数 | FORMAT(模板字符串,[值,...]) 通过指定模板字符串和对应的替换值,实现字符串拼接 |
| FORMAT("{1}同学今年的{2}成绩是{3}分",姓名,课程,分数)=小明同学今年的数学成绩是 95 分 |
REGEXEXTRACT 函数 | REGEXEXTRACT(文本,正则表达式) 从文本中提取第一段与正则表达式相匹配的内容 |
| 案例:从文本中提取 11 位数字的手机号 函数:REGEXEXTRACT("小明的电话号码是 13812345678","\d{11}")=13812345678 |
REGEXEXTRACTALL 函数 | REGEXEXTRACTALL(文本,正则表达式) 从文本中提取所有与正则表达式相匹配的内容 |
| 案例:从文本中提取所有 11 位数字的手机号 函数:REGEXEXTRACTALL("小明的电话号码是 13812345678, 小红的电话号码是 13987654321","\d{11}")=13812345678, 13987654321 |
REGEXMATCH 函数 | REGEXMATCH(文本,正则表达式) 判断一段文本中是否包含与正则表达式相匹配的内容 |
| 案例:校验手机号是否符合 11 位数字格式 函数:REGEXMATCH("13812345678","^\d{11}$")=true |
REGEXREPLACE 函数 | REGEXREPLACE(文本,正则表达式,替换文本) 将文本中所有与正则表达式相匹配的部分替换为其它文本 |
| 案例:替换文本中的手机号为星号 函数:REGEXREPLACE("小明的电话号码是 13812345678","\d{11}","***********")=小明的电话号码是 *********** |
数字函数
公式名称 | 公式函数 | 参数 | 示例 |
ABS 函数 | ABS(数值) 返回数值的绝对值 |
| ABS(-2)=2 |
ACOS 函数 | ACOS(数值) 返回数值的反余弦值,以弧度表示 |
| ACOS(-0.5)*180/PI()=120 |
ACOSH 函数 | ACOSH(数值) 返回数值的反双曲余弦值 |
| ACOSH(1)=0 |
ASIN 函数 | ASIN(数值) 返回数值的反正弦值,以弧度表示 |
| ASIN(-0.5)*180/PI()=-30 |
ASINH 函数 | ASINH(数值) 返回数值的反双曲正弦值,以弧度表示 |
| ASINH(10)=2.99822295 |
ATAN 函数 | ATAN(数值) 返回数值的反正切值,以弧度表示 |
| ATAN(1)*180/PI()=45 |
ATAN2 函数 | ATAN2(X坐标值, Y坐标值) 返回给定的 X 轴及 Y 轴坐标值的反正切值 |
| ATAN2(-1, -1)*180/PI()=-135 |
ATANH 函数 | ATANH(数值) 返回数值的反双曲正切值 |
| ATANH(0.76159416)=1.00000001 |
AVERAGE 函数 | AVERAGE(值1, [值2, ...]) 返回一组数据或集合的算术平均值 |
| AVERAGE(2, 100)=51 |
COS 函数 | COS(角度) 返回角度的余弦值(角度以弧度表示) |
| COS(60*PI()/180)=0.5 |
COSH 函数 | COSH(数值) 返回实数的双曲余弦值 |
| COSH(4)=27.30823284 |
COUNTA 函数 | COUNTA(值1, [值2, ...]) 统计数据集中非空值的个数 |
| COUNTA([附件字段])=附件字段中附件的个数 |
COUNTIF 函数 | 数据范围.COUNTIF(判断条件) 计算目标字段或数组中符合判断条件的数据个数 | 案例:统计[库存总表]中,剩余库存大于 1000 的库存种类数量 函数:[库存总表].COUNTIF(CurrentValue.[剩余库存]>1000) | |
INT 函数 | INT(数值) 将数值向下取值为小于或等于该数的最接近的整数 |
| INT(8.9)=8 |
ISODD 函数 | ISODD(数值) 判断目标数值是否为奇数,是则结果为true,否则为false |
| ISODD(1)=true |
MAX 函数 | MAX(值1, [值2, ...]) 返回数值数据集中的最大值 |
| MAX(2, 100)=100 |
MIN 函数 | MIN(值1, [值2, ...]) 返回数值数据集中的最小值 |
| MIN(2, 100)=2 |
MOD 函数 | MOD(被除数, 除数) 返回两数相除的余数 |
| MOD(3, 2)=1 |
PI 函数 | PI() 返回数字 3.14159265358979(数学常量 pi),精确到 15 个数字 | / | PI()=3.141592654 |
POWER 函数 | POWER(基数, 指数) 返回数字乘幂的计算结果 |
| POWER(5,2)=25 |
QUOTIENT 函数 | QUOTIENT(被除数, 除数) 返回除法的整数部分。 要放弃除法的余数时,可使用此函数 |
| QUOTIENT(5, 2)=2 |
ROUND 函数 | ROUND(数值, 位数) 将数值的指定位数以下进行四舍五入 |
| ROUND(99.44, 1)=99.4 |
ROUNDDOWN 函数 | ROUNDDOWN(数值, 位数) 将数值舍入到指定的位数,向 0 进行向下舍入 |
| ROUNDDOWN(99.44, 1)=99.4 |
ROUNDUP 函数 | ROUNDUP(数值, 位数) 将数值舍入到指定的位数,向 0 进行向上舍入 |
| ROUNDUP(99.45, 1)=99.5 |
SIN 函数 | SIN(角度) 给定角度(以弧度表示),返回其正弦值 |
| SIN(PI())=0 |
SINH 函数 | SINH(数值) 返回实数的双曲正弦值 |
| 2.868*SINH(0.0342*1.03)=0.101049063 |
SUM 函数 | SUM(值1, [值2, ...]) 返回目标数组所有数值的总和 |
| SUM(1, 2)=3 |
SUMIF 函数 | SUMIF(数据范围, 判断条件) 对符合判断条件的目标字段或数组中的数据进行求和 |
注:引用数据时,需要通过 CurrentValue 逐一判断 | 案例:统计[销售总表]中,[销售额] > 1000 的总和。 函数:[销售总表].[销售额].SUMIF(CurrentValue > 1000) 案例:统计[销售总表]中,各[销售人员]的[销售额]总和(需要用 FILTER) 函数:[销售总表].FILTER(CurrentValue.[销售人员]=[销售人员]).[销售额].SUM() |
TAN 函数 | TAN(角度) 返回给定角度的正切值(以弧度表示) |
| TAN(45*PI()/180)=1 |
TANH 函数 | TANH(数值) 返回给定实数的双曲正切值 |
| TANH(0)=0 |
VALUE 函数 | VALUE(文本) 将表示数字的文本字符串(如货币、日期或时间格式)转换为数字 |
| VALUE("$50")=50 |
SEQUENCE 函数 | SEQUENCE(起始数字,结束数字,[步长]) 生成一个数字序列,包含指定范围内的所有数字 |
| SEQUENCE(1,10,2)=1,3,5,7,9 |
位置函数
公式名称 | 公式函数 | 参数 | 示例 |
DISTANCE 函数 | DISTANCE([地理位置字段1], [地理位置字段2]) 计算两个地理位置之间的相差的距离,默认单位为千米 |
| Distance([公司所在地],[打卡位置]) |
列表函数
公式名称 | 公式函数 | 参数 | 示例 |
ARRAYJOIN 函数 | ARRAYJOIN(数组, [分隔符]) 通过指定的符号,将数组或列表中的元素拼接成字符串。需要结合 LIST 函数使用 | ARRAYJOIN(LIST("A","B","C"),"-")=A-B-C | |
FILTER 函数 | 数据范围.FILTER(筛选条件) 筛选出符合条件的记录(需指定目标字段) |
注:引用数据时,需要通过 CurrentValue 逐一判断 | 案例:查找[销售总表]中,每位成员的销售额 函数:[销售总表].FILTER(CurrentValue.[姓名]=[姓名]).[销售额] |
FIRST 函数 | FIRST(集合) 返回一组数据或集合中的第一个值 |
| LIST(1,3,5,7).FIRST() = 1 LIST("多","维","表","格").FIRST()="多" |
LAST 函数 | LAST(集合) 返回一组数据或集合中的最后一个值 |
| LIST(1,3,5,7).LAST() = 7 LIST("多","维","表","格").LAST()="格" |
LIST 函数 | LIST([值, ...]) 返回一个列表,可以包含值,也可以嵌套列表 |
| LIST(1,2,3) |
LISTCOMBINE 函数 | LISTCOMBINE(字段1, [字段2, ...]) 对多组字段进行合并,并展示其结果 |
| 案例:对 [1,2,3,4,5] 和 [2,3,4] 这两组数据进行合并 函数:LIST(1,2,3,4,5).ListCombine(2,3,4)=1,2,3,4,5,2,3,4 |
LOOKUP 函数 | LOOKUP(要搜索的值, 要匹配的字段, 返回的结果字段, [查找模式]) 根据指定匹配条件快速查找和引用数据 |
注:当要匹配的字段为多选时,可指定查找模式; 1:拆分查找,将多选拆分为多个单选进行查找 0:整合查找,将多选整体作为一个数组进行查找 | 案例:在当前[人员表]中查找引用[销售总表]中每位成员的销售额 函数:LOOKUP([姓名],[销售总表].[姓名],[销售总表].[销售额]) |
NTH 函数 | 集合.NTH(位置) 返回一组数据或集合中的第 N 个值 |
| LIST(1,3,5,7).NTH(2)=3 LIST("多","维","表","格").NTH(4)=格 |
UNIQUE 函数 | UNIQUE(值1, [值2, ...]) 对一组数据或集合进行去重,返回唯一值 | UNIQUE(1,2,2,4,5,5)=1,2,4,5 |