如何在Excel中用星号替换字母实现姓名列表匿名化?
Excel姓名匿名化公式解决方案
核心逻辑
将姓名按空格拆分为独立的名字段(名、中间名、姓),对每个名字段保留首字母和尾字母,中间用对应数量的星号填充,最后拼接所有处理后的字段。
适用于Excel 365/2021(支持动态数组函数)
假设目标姓名在A1单元格,使用以下公式:
=TEXTJOIN(" ",TRUE,BYROW(TEXTSPLIT(A1," "),LAMBDA(x,LEFT(x,1)&REPT("*",LEN(x)-2)&RIGHT(x,1))))
公式拆解:
TEXTSPLIT(A1," "):将姓名按空格拆分为单个名字段(如Bob Adam Smith拆分为{"Bob","Adam","Smith"})BYROW(..., LAMBDA(x,...)):遍历每个名字段,执行匿名化处理LEFT(x,1)&REPT("*",LEN(x)-2)&RIGHT(x,1):对单个名字段,取首字母+对应长度的星号+尾字母TEXTJOIN(" ",TRUE,...):用空格拼接所有处理后的名字段
适用于旧版Excel(无动态数组函数)
假设目标姓名在A1单元格,输入以下公式后按Ctrl+Shift+Enter触发数组计算:
=TRIM(CONCAT(LEFT(MID(" "&A1&" ",SEARCH(" ",A1,ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))+1,LEN(A1)),1)&REPT("*",LEN(MID(" "&A1&" ",SEARCH(" ",A1,ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))+1,LEN(A1)))-2)&RIGHT(MID(" "&A1&" ",SEARCH(" ",A1,ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))+1,LEN(A1)),1)&" "))
公式效果:
和新版公式逻辑一致,通过计算空格数量拆分名字段,逐个处理后拼接。
验证示例
| 原始姓名 | 匿名化结果 |
|---|---|
| Bob Adam Smith | Bb Am Sh |
| Steve Jobs | S*e Js |
| Stacy Jones | Sy Js |
内容的提问来源于stack exchange,提问作者Sara123
相关产品推荐
相关产品推荐

