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

A列有若干个单元格都有相同长度的字符,比如a1 123456, a2 132456, a3 456123等等。
现在我想替换每个单元格的固定位置的若干个字符。比如第2,3,5位的字符都换成*
请问如何办.

第1个回答  2010-08-21
自定义函数吧,使用起来简单快捷
-------------------
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() 了。
第2个回答  2010-08-21
就楼主举这个例子a1 123456
可以有另一种解决办法,就是提取你想要的字符然后连接上“*”字符,可以输入以下公式
=IF(LEN(A1)=6,CONCATENATE(MID(A1,1,1),"*","*",MID(A1,5,1),"*",MID(A1,6,1)),"")
如果你想替换单元格内的其他位数上的字符,只需简单更改一下公式就可以,这样可以实现替换单元格内的每个字符。
第3个回答  2010-08-21
楼主的说明是A列有若干个单元格都有相同长度的字符.那么我的理解是A列单元格字符数目是6位时,进行替换.
=IF(LEN(A2)=6,REPLACE(REPLACE(A2,2,2,"**"),5,1,"*"),"")
第4个回答  2010-08-21
=REPLACE(REPLACE(A1,2,2,"**"),5,1,"*")

下拉公式本回答被提问者采纳
相似回答