excel 批量替换问提 A列有若干个单元格都有相同长度的字符,比如a1 123456,a2 132456

A列有若干个单元格都有相同长度的字符,比如a1123456,a2132456,a3456123等等。现在我想替换每个单元格的固定位置的若干个字符。比如第2,3,5位的字符... A列有若干个单元格都有相同长度的字符,比如a1 123456, a2 132456, a3 456123等等。
现在我想替换每个单元格的固定位置的若干个字符。比如第2,3,5位的字符都换成*
请问如何办.
展开
 我来答
帐号已注销
2010-08-21 · TA获得超过8615个赞
知道大有可为答主
回答量:3242
采纳率:66%
帮助的人:2942万
展开全部
自定义函数吧,使用起来简单快捷
-------------------
Public Function tihuan(iRng As Range, iStr As String, iPlc As String) As String
Application.Volatile
If iRng.Count > 1 Then
TiHuan = "#1" 'iRng的单元格数量必须等于1
Exit Function
ElseIf InStr(iStr, ",") Then
Dim a: a = Split(iStr, ",")
b = CStr(iRng.Value)
For i = LBound(a) To UBound(a)
If CInt(a(i)) < 0 Or CInt(a(i)) > Len(b) Then
TiHuan = b '指定要替换的位置不在iRng的字符串范围内
Exit Function
End If
b = Left(b, CInt(a(i)) - 1) & iPlc & Right(b, Len(b) - CInt(a(i)))
Next
TiHuan = b
Exit Function
Else
b = CStr(iRng.Value)
If CInt(iStr) < 0 Or CInt(iStr) > Len(b) Then
TiHuan = b '指定要替换的位置不在iRng的字符串范围内
Exit Function
End If
b = Left(b, CInt(iStr) - 1) & iPlc & Right(b, Len(b) - CInt(iStr))
TiHuan = b
Exit Function
End If
End Function

---------------
把这段代码加入模块中,然后可以在单元格中用这个自编的公式,与正常的公式一样使用

假设 A 列从 A1 开始是你的数字,在B列输入公式,向下填充即可
=tihuan(A1,"2,3,5","*")
---------------
公式使用说明:
tihuan(iRng,iStr,iPlc)

功能:将单元格(iRng)字符串内的,指定位置(iStr)的字符,替换为某个字符(iPlc)

参数:iRng 指定单元格
如:A1
iStr 指定替换字符的位置,多个位置用英文逗号(,)隔开,放入英文引号("")内
如:"4" "2,3,5,7"
iPlc 替换为某个字符,放入英文引号("")内
如:"*"
示例:
=tihuan(A1,"2,3,5","*")
=tihuan(A3,"2","*")
=tihuan(A1,"5,7","*")
=tihuan(A1,"2,3,5,7","*")

-------------
代码加入模块的方法:

Alt + F11 键,进入VBA编辑器。
右击左边的“Microsoft Excel 对象”,在弹出的菜单中点击“插入”-“模块”。
双击模块,在右边把以上代码复制进去。保存。
就可以使用这个自定义函数 tihuan() 了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rn_te
2010-08-21
知道答主
回答量:30
采纳率:0%
帮助的人:13.2万
展开全部
就楼主举这个例子a1 123456
可以有另一种解决办法,就是提取你想要的字符然后连接上“*”字符,可以输入以下公式
=IF(LEN(A1)=6,CONCATENATE(MID(A1,1,1),"*","*",MID(A1,5,1),"*",MID(A1,6,1)),"")
如果你想替换单元格内的其他位数上的字符,只需简单更改一下公式就可以,这样可以实现替换单元格内的每个字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cm6705
2010-08-21 · TA获得超过328个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:406万
展开全部
楼主的说明是A列有若干个单元格都有相同长度的字符.那么我的理解是A列单元格字符数目是6位时,进行替换.
=IF(LEN(A2)=6,REPLACE(REPLACE(A2,2,2,"**"),5,1,"*"),"")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
knifefox
2010-08-21 · TA获得超过1.6万个赞
知道大有可为答主
回答量:1329
采纳率:76%
帮助的人:743万
展开全部
=REPLACE(REPLACE(A1,2,2,"**"),5,1,"*")

下拉公式
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式