文本与日期函数

数据刚从系统里导出来时总是脏的:姓名里夹着空格、日期是文本格式、身份证号里要截生日、合同到期要提前提醒。文本函数和日期函数就是做数据美容的两大工具。这一篇讲最常用的一组,每一个都配上真实例子。

文本合并:& 就够了

把姓和名拼一起、把地址几段拼一起,用 & 符号:=A2&B2,A2 加 B2 的内容首尾相接。& 还能拼固定文字:=A2&“先生”会在每个人名字后面加上先生。多段拼接同理:=A2&B2&“-”&C2。

& 两边的数据类型随便混,数字会自动变文本拼进去。日期直接拼会变成一串数字(因为日期本质是数字),要先转成文本:=TEXT(A2,“yyyy-mm-dd”),TEXT 函数负责把任何值按格式转成文字,日期、金额两千三百四十五元这种都可以做。

函数写法也有现成的:CONCATENATE(A2,B2) 和 & 效果一样,较新版本还有 CONCAT 和 TEXTJOIN(可以指定分隔符批量合并一片区域)。日常 & 足够,区域批量合并再找 TEXTJOIN。

提取:LEFT、RIGHT、MID

从一段文本里截取一部分,三兄弟按着位置干活:

函数 截哪里 例子 结果
LEFT 从左截 N 个字 =LEFT(A2,1) 取姓
RIGHT 从右截 N 个字 =RIGHT(A2,4) 取后四位
MID 从中间截 =MID(A2,7,4) 从第 7 位截 4 位
LEN 数一共几个字 =LEN(A2) 字符长度

来看经典案例:身份证号里截生日。18 位身份证第 7 到 14 位是出生日期,=MID(A2,7,8) 得到 19901005 这样的文本,再套 =TEXT(MID(A2,7,8),“0000-00-00”) 就变成 1990-10-05 的写法。手机号脱敏显示后四位:=RIGHT(B2,4),配合前面的星号凑成一个保护隐私的格式。

截取之前先确认数据是不是规整的:都用 LEN 看一眼长度齐不齐,长度不一的截出来位置必然是歪的。

文本清洗三件套

函数 治什么病 写法
TRIM 前后与中间多余空格 =TRIM(A2)
SUBSTITUTE 替换指定文字 =SUBSTITUTE(A2,“旧”,“新”)
REPLACE 按位置替换 =REPLACE(A2,1,4,“****”)
UPPER/LOWER 大小写转换 =UPPER(A2)

数据从别的系统导出来时,姓名经常带着看不见的首尾空格,导致 VLOOKUP 查不到、COUNTIF 数不对。先在旁边空列写 =TRIM(A2) 往下一拖,复制这列结果,原地用 Paste Special 粘贴成值,脏数据就洗干净了。TRIM 只杀掉多余空格,正常的单个空格会保留。 SUBSTITUTE 的经典用法是换名字:全公司人事系统里“销售部”改名“华东区”,一份通讯录 =SUBSTITUTE(B2,“销售部”,“华东区”) 批量换好。它还能数某个字出现几次:=LEN(A2)-LEN(SUBSTITUTE(A2,“-”,“”)),原理是算替换前后的长度差。

日期函数家族

Excel 的日期其实是一个整数:1900 年 1 月 1 日是 1,以后每天加一。所以日期能直接加减:合同到期日减去今天就是剩余天数。常用函数一溜摆出来:

函数 作用 例
TODAY 今天日期,每天自动变 =TODAY()
NOW 当前日期加时间 =NOW()
DATE 三个数拼成日期 =DATE(2026,10,27)
YEAR/MONTH/DAY 取年、月、日 =YEAR(A2)
WEEKDAY 星期几 =WEEKDAY(A2,2)
DATEDIF 算两日期间隔 =DATEDIF(A2,B2,“y”)
EOMONTH 月末日期 =EOMONTH(A2,0)

WEEKDAY 的第二个参数传 2 时,星期一返回 1、周日返回 7,符合中国人的星期概念。DATEDIF 的第三参数 y 算整年、m 算整月、d 算天数:算工龄用 =DATEDIF(A2,TODAY(),“y”),入职日期放 A2。DATEDIF 是个隐藏函数,输入时没有提示,得手敲完整。

日期的常见翻车

现象 原因 办法
日期靠左、查不到 文本格式存储 分列转成真日期
显示 123456 一串数字 单元格格式被改成常规 重新设日期格式
2026.10.27 不被识别 点分隔符不被支持 换成横杠或斜杠写法
算出来差一天 起止日期算头不算尾 心里有数即可,或加一

判断一个单元格是不是真日期:看它右对齐就是、左对齐多半是文本。假日期不能参与计算、排序、透视,分列这个功能可以成片地转换。

真实案例:合同到期提醒

人事表 A 列姓名、B 列合同到期日。要自动提醒 30 天内到期的人员,C 列写公式:=IF(B2-TODAY()<=30,“即将到期”,“正常”)。再把 C 列套上条件格式,即将到期自动标红色,每周一打开表格扫一眼就行。

工龄另一种算法:=DATEDIF(A2,TODAY(),“y”)&“年”&DATEDIF(A2,TODAY(),“ym”)&“个月”,得到 3 年 7 个月这样可读的结果。注意 ym 与 y 的区别:ym 只算月部分不算整年。

文本与日期的联动

真实表格里文本和日期经常配合用。把日期转成可读文字:=TEXT(TODAY(),“yyyy 年 m 月 d 日”),做报表标题日期时特别好使。把文字日期转成真日期:DATEVALUE 函数认得标准写法的文本日期。批量重命名文件时,文件名拼上日期:=“月报_”&TEXT(A2,“yyyymm”),得到的文件名自动带上年月,归档一目了然。

延伸阅读