要给名单里的手机号隐藏中间四位,直接在旁边新建一列,输入 =left(b2,3)&"****"&right(b2,4),向下填充就完事。当前操作以wps表格为例,如果用旧版excel或其他表格软件,先确认下是否支持 left、right 和 len 这几个函数。
第一步:整理手机号列
先把人员名单里的所有手机号放到同一列,示例里姓名在 A 列、手机号在 B 列,空出C列留着放“脱敏手机号”。手机号建议按 11 位文本或数字完整录入,别提前加空格、短横线或省略号,不然后面的截取位置会出偏差。

第二步:输入隐藏公式
点 C2 单元格,输入公式 =LEFT(B2,3)&"****"&RIGHT(B2,4)。这个公式会自动保留 B2 手机号的前3位和后4位,中间用4个星号替换,刚好适合名单、签到表、员工通讯录这类只需要展示部分号码的场景。

第三步:向下填充结果
C2 算出类似 138****6666 的结果之后,把鼠标移到 C2 单元格右下角的填充柄,往下拖到名单最后一行就行。也可以直接双击填充柄,WPS表格会自动顺着B列的已有数据把剩下的行全部填完。

第四步:固定脱敏后的号码
要是这份名单要发给别人,建议先复制C列,再用“选择性粘贴”选“值”。这样发出去的就是 138****6666 这类固定文本,不会因为对方看到公式、或者删掉原始手机号列就弹出错误值。

第五步:补上长度判断
名单里偶尔会混进空号、座机备注或者位数不对的号码,可以把公式换成 =IF(LEN(B2)=11,LEFT(B2,3)&"****"&RIGHT(B2,4),B2)。它会先判断B2里的内容是不是正好11位,是11位才做脱敏处理,不是11位就原样保留,方便后面人工核对异常数据。

完整语法拆开很好懂:LEFT(text,num_chars) 从文本左侧取指定数量的字符,RIGHT(text,num_chars) 从文本右侧取指定数量的字符,LEN(text) 统计文本总字符数,& 负责把几段不同的文本拼接在一起。
| 函数或符号 | 在本例中的写法 | 作用 |
|---|---|---|
LEFT |
LEFT(B2,3) |
取手机号前 3 位 |
RIGHT |
RIGHT(B2,4) |
取手机号后 4 位 |
& |
LEFT(...)&"****"&RIGHT(...) |
把前 3 位、星号、后 4 位拼成一段文本 |
LEN |
LEN(B2)=11 |
判断是不是 11 位手机号 |
常见踩坑点主要有三个:公式里漏写双引号会直接报公式错误;手机号前面带国家区号或者多余空格时,截取出来的位置会不准;把原始手机号列删掉之后,没提前转成值的脱敏列可能显示引用错误。如果不想保留前三位,只想显示7个星号加最后四位,公式可以改成 ="*******"&RIGHT(B2,4);需要保留前 3 位、后 2 位时,把RIGHT函数的最后一个参数改成 2 就可以。











