EXCEL如何给某几个汉字中加空格?不要手动加的?

如原内容 我是一个兵
改为 我 是 一 个 兵 也可能改为 我是 一个 兵 也可能改为 我 是一个 兵,要求用函数解决,不要宏。

可以使用mid函数来实现,格式为mid(数据源,显示开始字符位置,显示字符长度):
例如:A1单元格为内容为我是一个兵如想在B1格加空格可写“=mid(A1,1,1)&" "&mid(A1,2,4)”
B1单元格即为“我 是一个兵”追问

那如果我的内容不是上面的而且比上面的字多,岂不是还要改公式。我要的是自动识别的,比如:
原内容为: xxxxxxxxxxxxxx…… 要改为x x x x x x x x x x x x x x…… 注意此处的字符串字数不定哦。要他自动识别的在每个字中间加空或任意内容 公式中要变量,不要那指定第几个字符后加内容的,要任意字符中间加空格的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-15

不明白这种问题为什么不用宏解决?用宏的话很方便,写个自定义函数立马就能解决,而且用起来跟函数一样,只不过就是需要改变下宏安全性即可。

 

函数的话确实没想到什么好的方法可以实现每个字之间都加空格的(即XXXX变成X X X X),如果你只要头尾两个字之间加空格(即XXXXXXX变成X XXXXX X),那函数还是很好实现的,公式如下

=CONCATENATE(LEFT(A1,1)," ",MID(A1,2,LEN(A1)-2)," ",RIGHT(A1,1))

 

如果你非要用函数来实现的话可以参考 byl341010202 的回答,将他的公式修改为以下形式(假设你的数据在A列里,那就在B1中写入以下公式并一直右拉至公式出错即可):

=SUBSTITUTE(A1,MID(A1,LEN($A1)-COLUMN(A1),1),MID(A1,LEN($A1)-COLUMN(A1),1)&" ")

然后通过一直右拉至公式出错也可以实现

 

 

附自定义函数代码

Public Function fg(rng As Range)
For i = 1 To Len(rng)
    Text = Text & " " & Mid(rng, i, 1)
Next i
fg = Mid(Text, 2, Len(Text))
End Function

本回答被提问者和网友采纳
第2个回答  2014-01-15
如果”我是一个兵“在A1,则在B1中输入:
=CONCATENATE(MID(A1,1,2)," ",MID(A1,3,2)," ",MID(A1,5,1))
就可以显示”我是 一个 兵“。
如果在B1中输入:
=CONCATENATE(MID(A1,1,1)," ",MID(A1,2,3)," ",MID(A1,5,1))
就可以显示”我 是一个 兵“。
第3个回答  2014-01-15
第一种情况:
=REPLACE(REPLACE(REPLACE(REPLACE(A1,2,0," "),4,0," "),6,0," "),8,0," ")
第二种情况:
=REPLACE(REPLACE(A1,3,0," "),6,0," ")
第三种情况:
=REPLACE(REPLACE(A1,2,0," "),6,0," ")追问

如果原内容是
定义外部参照或块剪裁边界,并且设置前剪裁面和后剪裁面
怎么变为 定 义 外 部 参 照 或 块 剪 裁 边 界,并 且 设 置 前 剪 裁 面 和 后 剪 裁 面,函数中要有个变量啊。否则每句不同的话都要改公式,岂不是要累死。那还不如手动加呢

第4个回答  2014-01-15
例如,A1="我是一个兵",B1=SUBSTITUTE(A1,MID(A1,6-COLUMN(),1),MID(A1,6-COLUMN(),1)&" "),右拉至E1。又如,A2="我是一个兵",B2=SUBSTITUTE(A2,MID(A2,4,1),MID(A2,4,1)&" "),C2=SUBSTITUTE(B2,MID(B2,1,1),MID(B2,1,1)&" ")。
相似回答