跳到主要内容

文本函数

文本函数适合做文案拼接、关键词判断、编号截取、数组转文本和格式转换。

使用场景

  • 生成结果页提示语、通知内容、编号或摘要
  • 从身份证、手机号、订单号里截取指定片段
  • 判断答案是否为空,或是否包含某个关键词
  • 把数字、日期或数组转成更适合展示的文本

快速查找

  • 拼接与格式化:CONCATENATECHARTEXTRMBCAPLOWERUPPERTRIM
  • 长度、截取与替换:LENLEFTRIGHTMIDREPLACEREPT
  • 判断与查找:EXACTISEMPTYSEARCHFIND
  • 数组处理:SPLITJOINUNION
  • 类型转换与系统值:VALUEIP

拼接与格式化

函数用法适合做什么示例
CONCATENATECONCATENATE(text1, text2, ...)把多个字段或字符串拼成一句话CONCATENATE("你好,", 姓名)
CHARCHAR(number)插入换行、制表符、引号等特殊字符CHAR(10)
TEXTTEXT(value, format)把数字或日期转成固定格式的文本TEXT(提交时间, "yyyy-MM-dd")
RMBCAPRMBCAP(number)把金额转成人民币大写RMBCAP(1234.56)
LOWERLOWER(text)把英文转成小写LOWER("SurveyKing")
UPPERUPPER(text)把英文转成大写UPPER("surveyking")
TRIMTRIM(text)去掉首尾空格,并把中间连续空格压成一个TRIM(" 张 三 ")
提示

TEXTFIXED 这类函数返回的是文本。如果你后面还要继续做数学计算,不要过早把数字转成文本。

长度、截取与替换

函数用法适合做什么示例
LENLEN(text)统计字符个数LEN(手机号)
LEFTLEFT(text, [num_chars])从左边截取指定长度LEFT(身份证号, 6)
RIGHTRIGHT(text, [num_chars])从右边截取指定长度RIGHT(手机号, 4)
MIDMID(text, start_num, num_chars)从中间指定位置开始截取MID(身份证号, 7, 8)
REPLACEREPLACE(old_text, start_num, num_chars, new_text)替换指定位置的一段文本REPLACE(手机号, 4, 4, "****")
REPTREPT(text, number_times)把同一段文本重复多次REPT("*", 6)

判断与查找

函数用法适合做什么示例
EXACTEXACT(text1, text2)区分大小写地比较两个字符串是否完全相同EXACT("A", "a")
ISEMPTYISEMPTY(value)判断字段是否为空ISEMPTY(手机号)
SEARCHSEARCH(find_text, within_text, [start_num])不区分大小写查找文本位置SEARCH("survey", "SurveyKing")
FINDFIND(find_text, within_text, [start_num])区分大小写查找文本位置FIND("King", "SurveyKing")

SEARCHFIND 返回的是位置序号,返回 0 表示没有找到。

数组处理

函数用法适合做什么示例
SPLITSPLIT(text, text_separator)按指定分隔符拆分文本SPLIT("A,B,C", ",")
JOINJOIN(array, "连接符")把数组按指定连接符拼回一段文本JOIN(兴趣爱好, "、")
UNIONUNION(text1, text2, ...)UNION([array])去掉重复值UNION("张三", "李四", "张三")

类型转换与系统值

函数用法适合做什么示例
VALUEVALUE(text)把纯数字文本转成数字VALUE("88")
IPIP()获取当前作答人的 IP 地址IP()

如果 VALUE 处理的文本里混入了汉字、字母或符号,通常无法按数字继续计算。

TEXT 格式怎么写

数字格式

标记作用示例
#数字占位符,只显示有意义的位数TEXT(23.1578, "###.##") 得到 23.16
0数字补位符,不足位数会补 0TEXT(23.1, "000.00") 得到 023.10
,千分位分隔符TEXT(23000.1, "0,000.00") 得到 23,000.10
%百分比显示TEXT(0.236, "0.0%") 得到 23.6%
[Num0]显示原始数字文本TEXT(123.7895, "[Num0]")
[Num1]转成中文小写数字TEXT(123, "[Num1]") 得到 一百二十三
[Num2]转成中文大写数字TEXT(123, "[Num2]") 得到 壹佰贰拾叁

日期格式

标记作用
yy / yyyy两位年 / 四位年
M / MM / MMM月 / 补零月 / 中文月
d / dd日 / 补零日
HH / hh24 小时制 / 12 小时制
mm / ss分 / 秒
E / EE / EEE星期序号 / 星期简称 / 星期全称

常见写法:

TEXT(提交时间, "yyyy-MM-dd HH:mm:ss")
TEXT(提交时间, "yyyy年MM月dd日")

综合示例

根据身份证号自动判断性别

身份证号第 17 位是性别位,奇数表示男,偶数表示女。

IF(MOD(VALUE(MID(身份证号, 17, 1)), 2)==1, "男", "女")

生成多行结果摘要

CONCATENATE("姓名:", 姓名, CHAR(10), "总分:", 总分, CHAR(10), "建议:", 建议结果)

常见问题

SEARCH 和 FIND 有什么区别?

两者都会返回文本第一次出现的位置。区别是 SEARCH 不区分大小写,FIND 区分大小写。

ISEMPTY 还需要再和 TRUE() 比较吗?

一般不需要。直接写 IF(ISEMPTY(手机号), "未填写", "已填写") 就够了,只有你想把结果显式写成逻辑值时,才需要再配合 TRUE()FALSE()

VALUE 为什么转不出来?

VALUE 更适合处理纯数字文本。比如 "88" 可以转成数字,但 "88分""A88" 这类内容通常不能直接参与数值计算。