用EXCEL给卡号添加空格,学会的财务同学已经早下班了
- 2026-09-19 18:07:51
用EXCEL给卡号添加空格,学会的财务同学已经早下班了做财务的同学,少不了要输入各种卡号。但是动辄16位以上数字,想要一次性输入正确还有点难度,特别是遇到里面有4个以上相同数字时,还需要多次进行确认。 一些比较暖心的同事在给别人发卡号、手机号时,会每4位加上一个空格,可读性立马就上来了。对比一下: 但是遇到不那么贴心的人发来的卡号,我们可以用EXCEL中的公式,实现以空格进行分割。今天就带大家用7种不同的方法来实现。
一个错误的示范(不要学) 马上有同学举手了
,这个我会,用EXCEL中的TEXT函数,可以自定义数字显示的格式。 比如TEXT(15523456789,"0000 0000 000")=1552 3456 789 但是当用TEXT函数对6228482200000045101 进行操作后,却发现公式输出变成了6228 4822 0000 0040 000,卡号最后4位的5101全部显示成了0。



因为在EXCEL中最多显示15位的数字,超过15位的数字会默认用科学计数的方式来保存,就损失了一部分精度。 另外,卡号长度如果小于15位,使用TEXT函数操作后,还会在前面显示多余的0。
好的,现在我们开始,先梳理一下我们的思路,通过以下三步来完成: 于是,我们有了这个公式: =TRIM(LET(x,ROW($1:$20),CONCAT(MID(A2,x,1)&IF(MOD(x,4),""," ")))) 
以下是百度文心一言对这个公式的解释(懒得打字,AI生成的容有部分调整): Trim函数用于清除字符串开头或结尾的多余空格,如果字符串长度小于16可能后面会有多个空格。实际使用中根据需要,可加可不加。
理解上面公式的思路,其实我们就非常好好简化了。 公式一: =CONCAT(MID(A3,{1,5,9,13,17},4)&" ") 
公式二: =TEXTJOIN(" ", , MID(A3, {1,5,9,13,17}, 4)) 
这两个公式的核心逻辑都是用MID函数,用常量数组从指定的位置,依次取4个字符串。然后通过字符串连接函数CONCAT或TEXTJOIN函数生成。
好了,现在我们换个思路。如果说我们不用字符串拼接函数,我们能否完成这个操作呢? 回到我们最初的思路上,从原字符串中取出4个字符,加上1个空格,再取出4个字符,再加上1空格,如此操作,直到完成。 有编程思想的同学心想,这不就是循环结构么?在EXCEL2021版本之前,我们可以通过内存数组,如ROW(1:2)的方式进行循环,但是如果不用字符串接接函数,我们如何在公式中实现呢? 在EXCEL2021版本后,新增加的几个函数,是可以支持循环的,如SCAN 、REDUCE,LAMADA函数与LET配合进行嵌套调用,也可以实现循环。 我们用REDUCE函数的,搭配LAMADA与MID函数,写这样一个公式: =REDUCE("",{0,1,2,3,4},LAMBDA(x,y,x&MID(A6,y*4+1,4)&" ")) 
以下是百度文心一言对这个公式的解释(懒得打字,AI生成的容有部分调整): 1. 核心函数:
2. LAMBDA 函数:
在EXCEL中对字符串进行替换时,我们经常会用到SUBSTITUTE函数。其实EXCEL中还有一个REPLACE函数也能进行替换。 如果将一个电话号码13852345234中间的4位 用*号来替换,实现138****5234的效果,可以用下面两个公式实现: =SUBSTITUTE(13852345234,5234,"****",1) 或 =REPLACE(13852345234,4,4,"****") 注意观察这个SUBSTITUTE函数,第4个参数表示要替换的实例位置,平常我们使用时很少用到第4个参数,此处要设置为1。 关于SUBSTITUTE与REPLACE函数的区别,后面会再专开一篇来廛。 REPLACE共有4个参数,第一个参数表示要操作的字符串,第二个参数表示替换开始的位置,第三个参数表示要替换的长度,第四个参数表示替换后的内容。 
我们依照这个思路,再结合REDUCE函数进行循环操作,在指定位置加上空格,就可以实现了。 =REDUCE(A3,{5,10,15,20},LAMBDA(x,y,REPLACE(x,y,," "))) 
EXCEL新增加的函数中有正则表达式函数,熟悉正则表达式的同学来说,这个问题完全是小菜一碟。 =REGEXREPLACE(A8,"(\d{4})","\1 ") 
以下是百度文心一言对这个公式的解释(懒得打字,AI生成的容有部分调整): 关于正则表达式的操作,感兴趣的朋友可以自行搜索,学会之后,你的工作会轻松很多。
前面说到SUBSTITUTE函数,WPS在25年维护时新增了一个独有的SUBSTITUTES函数。英语中S表示复数,这里也可以理解为多次替换。 利用这个函数,我们将原字符串中的每4位替换成它本身加一个空格,不就可以实现我们想要的结果么? =LET(x,{1,5,9,13,17},y,MID(A1,x,4),SUBSTITUTES(A1,y,y&" ")) 

加空格前:6228482200000045101
加空格后:6228 4822 0000 0045 101
,这个我会,用EXCEL中的TEXT函数,可以自定义数字显示的格式。



根据思路生成的公式
我们可以把这个卡号上的数字拉顺序取出来; 如果这个位上的序号恰好是4的倍数,那么我们就补上一个空格; 然后再把这些数字与空格组合起来,就可以了。

ROW($1:$20)
- 生成一个垂直数组
{1;2;3;...;20},表示从A2中提取字符的位置(假设卡号最长20位)。
LET(x, ROW(...), ...)
- 将数组赋值给变量
x,避免重复计算,提升效率。
MID(A2, x, 1)
- 从A2中逐个提取字符。例如:
- 当
x=1→"6" - 当
x=2→"2" - ...
- 当
x=20→ 若A2不足20位,返回空字符串""。
IF(MOD(x, 4), "", " ")
MOD(x, 4)计算x除以4的余数:
- 余数为0时(即
x是4的倍数),返回" "(1个空格); - 否则返回空字符串
""。
- 作用:在每4位数字后插入1个空格。
CONCAT(MID(...) & IF(...))
- 将每个字符与条件空格拼接,再合并成字符串。例如:
x=4时:"6" & " "→"6 "x=5时:"2" & " "→"2"
简化后的公式


循环拼接的公式

1. 核心函数:REDUCE
- 作用:对数组
{0,1,2,3,4}进行迭代计算,逐步累积结果。 - 参数:
- 初始值:
""(空文本,作为累积的起点)。 - 数组:
{0,1,2,3,4}(表示分组次数,共5组)。 - LAMBDA函数:定义每次迭代的计算规则。
2. LAMBDA 函数:LAMBDA(x, y, x & MID(A6, y*4+1, 4) & " ")
- 参数:
x:当前累积的结果(初始为"",后续为上一次迭代后的文本)。y:当前迭代的数组值(即0, 1, 2, 3, 4)。
- 逻辑:
y*4+1:计算每组的起始位置。
- 当
y=0→ 起始位置1(第1组:1~4位)。 - 当
y=1→ 起始位置5(第2组:5~8位)。 - 依此类推。
MID(A6, y*4+1, 4):从A6中提取4位字符。
- 例如:
MID(A6, 1, 4)→"6228"(第1组)。
x & ... & " ":将当前分组结果追加到累积文本中,并添加一个空格。
3. 迭代过程
迭代次数 (y) | 起始位置 (y*4+1) | 提取的4位字符 | 累积结果 (x) |
0 | 1 |
|
→ |
1 | 5 |
|
→ |
2 | 9 |
|
→ |
3 | 13 |
|
→ |
4 | 17 |
|
→ |
4. 最终结果
- 公式返回:
"6228 4822 0000 0045 101 "(末尾有一个多余空格)。 - 如果需要去除末尾空格,可嵌套
TRIM:
循环添加的公式
非常棒的是,每三个参数可以为0。此时进行替换,就相当于在指定位置插入一段内容。


正则表达式替换

"(\d{4})":正则表达式,匹配连续4位数字,并用括号()捕获为一个分组(记为\1)。"\1 ":替换内容,表示保留匹配到的4位数字(\1),并在后面加一个空格。
WPS中的特有的一个函数


本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。