WPS表格如何按身份证号码提取出生日期?
在WPS表格用MID+TEXT组合公式,一键提取18位身份证中的出生日期,兼容Windows/macOS/安卓/iOS最新版。

功能定位:为什么必须会“提取出生日期”
关键词“WPS表格如何按身份证号码提取出生日期”背后,是人事、财务、教务场景里最常出现的结构化清洗任务:把18位身份证号转换成标准日期,才能继续算年龄、工龄、社保缴费年限。手动复制不仅低效,还极易把“1990”敲成“1980”。WPS Spreadsheet(表格)原生兼容XLSX,也支持金山自研的ET格式,公式语法与Excel 2007-2026保持一致,学会一套即可跨平台复用。
2026 Spring Refresh(内部版本号12.9.1.3689)并未改动文本函数,但AI助手2.0新增“公式意图预测”:在编辑栏键入“=出生”即可自动补全完整写法,对新手更友好。下文所有路径均以“截至当前的最新版本”为准,若你仍在11.x,请先到官网升级,否则AI补全可能不可用。
最短可达路径:一条公式搞定
Windows/macOS桌面端
- 打开WPS表格,选中目标列(例如A2:A2000存放身份证号)。
- 在右侧插入空白列,命名“出生日期”。
- B2单元格输入公式:
=TEXT(MID(A2,7,8),"0000-00-00") - 回车后,双击填充柄(右下角小方块)向下批量填充。
- 若需真·日期格式(可参与年龄计算),把公式再包一层:
=--TEXT(MID(A2,7,8),"0000-00-00")
然后设置单元格格式→日期→yyyy-mm-dd。
示例:将A2:A2000设为“智能表格”后,公式会自动扩展,无需手动填充,后期插入新行也能同步更新。
Android/iOS移动端
路径:打开表格→点一下待写入单元格→在底部“公式”页签中切换到“文本”类别→选择MID→再手动输入TEXT。因移动端键盘遮挡,建议先在PC端建好模板,再用“WPS Air”云文档同步到手机,现场仅做填充或查看。
Linux(RPM/DEB)特别说明
Linux版界面与Windows完全一致,公式无需转换;但若打开CSV源文件,请先用“数据→分列”把18位身份证列设为文本,否则尾四位会被科学计数法截断,导致提取失败。
公式拆解:为什么MID起点是7、长度是8
国家标准GB 11643规定18位身份证的排列为:6位地址码+8位出生日期+3位顺序码+1位校验码。因此第7-14位就是“YYYYMMDD”。MID(A2,7,8)把这段字符串截出后,TEXT函数再按“0000-00-00”模板插入连字符,得到可读日期。若你的数据源里混有15位旧证,需先统一升级为18位,否则出生年份只有两位,公式会出错。
注意:15位旧身份证出生年份在前6位之后,仅2位,需要手动+“19”前缀,或使用IF(LEN())做分支判断,复杂度翻倍。建议提前用数据→分列→长度筛选,把旧证隔离后再处理。
常见例外与副作用
1. 文本型数字导致MID返回空
经验性观察:从ERP导出的“身份证”列看似文本,实则前端带隐藏单引号,MID仍能工作;但若经手人提前把列设成“数值”,18位数字会被四舍五入到15位,尾部变000。此时公式再精也无力。验证方法:选中单元格看状态栏是否显示“数值”;若已损坏,需重新导入并明确将列设为文本。
2. 1900年以前出生的人
WPS表格与Excel一样采用1900日期系统,1900-01-01之前的日期无法被识别为真日期,会返回负序列号。若业务必须录入19世纪出生(如历史档案),请把结果保留为文本,不做日期化,否则年龄计算会失真。
3. 批量填充性能瓶颈
在低于8 GB内存的老电脑上,对10万行直接双击填充可能触发数十秒无响应。缓解方案:先填充前1000行,确认无误后,用“数据→公式→替换列”功能一次性复制结果并粘贴为值,再把原列隐藏,减少重算压力。
AI伴写助手2.0:一键生成公式的正确姿势
在“截至当前的最新版本”中,点击工具栏右上角“AI”图标,输入自然语言:“从身份证提取出生日期”。AI会返回两条建议:①纯文本型;②可参与计算的真日期。选择后自动插入当前单元格。经验性观察:AI补全对大小写不敏感,但数据源若含列标题“证件号码”,它会更倾向于用结构化引用,例如[@证件号码],方便后续插入表格自动扩展。
提示:AI每日免费额度300次,批量生成1000条公式只需1次调用(一次性粘贴),无需逐行消耗。
验证与回退:如何确保结果正确
- 随机抽样:用筛选功能把出生月份=2的样本单独列出,人工核对身份证第11-12位是否为“02”。
- 日期合法性:在相邻列输入
=IF(DAY(B2)=0,"非法",""),可快速捕捉2月30日之类错误(源头通常是脏数据)。 - 回退方案:提取前先用“Ctrl+C→选择性粘贴→值”备份原始身份证号;若公式写错,直接删除新列即可,无需担心源数据被覆盖。
与第三方协同:Python、低代码脚本怎么接
WPS Script(TypeScript语法)已内嵌于“工具→脚本编辑器”。下面给出可复现的六行脚本,把当前选区身份证批量写出出生日期到右邻列,适合需要定时跑批的场景。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let rng = workbook.getSelectedRange();
rng.getOffsetRange(0,1).setFormulaLocal(
"=TEXT(MID(" + rng.getAddress() + ",7,8),\"0000-00-00\")"
);
}
保存后,可在“数据→脚本→定时任务”里设定每日06:00自动执行,配合WPS Air把结果推送到企业微信机器人。注意:脚本运行前同样要检查身份证列是否为文本,否则MID结果为空。
适用/不适用场景清单
| 场景特征 | 是否推荐 | 理由与替代 |
|---|---|---|
| <1万行临时台账 | ✅推荐 | 公式即写即用,无需脚本 |
| 10万行以上且每日更新 | ⚠️谨慎 | 建议用WPS Script或Python离线跑,避免桌面版重算卡死 |
| 含15位旧证且无法回溯 | ❌不推荐 | 需人工补全世纪码,错误率高,建议源头系统升级 |
| 需要司法举证 | ✅推荐 | 公式可审计、可回溯,符合ISO 27040数据保护规范 |
最佳实践速查表
- 导入前先把身份证列设为“文本”,禁用科学计数。
- 用Ctrl+T转成“智能表格”,公式自动向下扩展,免手动填充。
- 提取后立即在旁边插入
=RAND()列并排序,随机抽5%人工复核。 - 若后续要算年龄,记得把TEXT结果加双负号“--”转成真日期,再套
=DATEDIF(B2,TODAY(),"y")。 - 文件含敏感个人信息,使用“文件→文档加密→国密SM4”设置打开密码,再上传WPS Air,满足《个人信息保护法》最小泄露原则。
FAQ:提取出生日期常见疑问
公式返回########怎么办?
列宽不足或日期为负(生于1900前)。先拉宽列,若仍显示,则检查源数据是否为15位旧证或文本型数字丢失。
能否直接得到年龄?
在提取列旁输入=DATEDIF(B2,TODAY(),"y")即可。注意B2必须是真日期,而非文本。
AI补全的公式出现[@身份证]无法识别?
说明当前区域未转成“智能表格”。选中数据,按Ctrl+T勾选“表包含标题”,结构化引用即可生效。
提取后想恢复原始身份证列宽?
复制提取结果→右键“选择性粘贴→值”→隐藏原始列。这样既保留可追溯性,又避免公式误删。
移动端没有填充柄怎么批量?
长按单元格→拖动右下角绿色圆点;或点击“工具→填充→向下填充”。超过千行建议回PC端操作。
收尾:下一步该做什么
你现在已掌握WPS表格按身份证号码提取出生日期的完整链路:从最短公式、平台差异,到性能、合规与回退。建议立即打开一个真实人事文件,按“文本列→MID+TEXT→真日期→DATEDIF算年龄”四步走一遍,实测性能与准确性。若数据量过万,把公式改为WPS Script定时任务,再用WPS Air加密分享给财务,便能在“亚秒级”响应内完成年龄汇总,而无需暴露原始身份证号。下一次遇到类似结构化提取,只需替换MID起始位与长度,同一套模板即可复用,真正做到“一次编写,随处运行”。
未来版本预期:经验性观察显示,金山已在测试“数据类型智能识别”内测版,若身份证列被自动标记为“证件号”类型,提取公式有望一键生成,甚至不再需要手动输入MID。保持更新,即可在正式版推送后零成本升级。
