如题所述
第1个回答 2021-08-03
请参考以下代码,希望对您有帮助:
Sub replaceA()
Dim rng As Range, sr$
For Each rng In ActiveSheet.Range("A1").CurrentRegion
If InStr(rng, "/") Then
sr = Replace(rng, "/", vbCrLf, , 1) '换成换行符
'sr = Replace(rng, "/", ".", , 1)'换成点
rng.Value = sr
End If
Next
End Sub追问
Sub replaceA()
Dim rng As Range, sr$
For Each rng In ActiveSheet.Range("A1").CurrentRegion
If InStr(rng, "/") Then
sr = Replace(rng, "/", vbCrLf, , 1) '换成换行符
'sr = Replace(rng, "/", ".", , 1)'换成点
rng.Value = sr
End If
Next
End Sub追问
谢谢您的帮忙。如果是要替换第二个“/”为点,如何修改?
追答可以先用instr函数查找出第一个“/”所在的位置比如是第n位,然后Replace的第四参数设置为n+1,也即从第n+1位开始执行替换,参考代码段如下:
n=InStr(rng, "/")‘查找出第一个“/”所在的位置
m=InStr(n+1,rng, "/")'再次从n+1的位置开始往右查找“/”所在的位置
If n>0 and m>0 Then'如果字符串中存在2个以上“/”,则执行下面的替换
sr = Replace(rng, "/", ".",m , 1)'第2个“/”换成点
rng.Value = sr'替换后的字符串赋值给rng
End If
谢谢你的耐心教导,还有一点点小问题,麻烦再指导一下哦!非常谢谢!!!
哈哈,对不起,是我没在意。是repalce的第4参数大于1导致的结果,会把起始位置前的所有内容都舍掉,这个功能很奇葩。既然这样,那么把前面的被舍掉的内容再加上去。sr的这句代码修改下:
sr = Mid(rng, 1, n) & Replace(rng, "/", ".", n + 1, 1)
完美解决,非常谢谢!
本回答被提问者采纳第2个回答 2022-06-28
Sub replaceA()Dim rng As Range, sr For Each rng In ActiveSheet.Range("A1").CurrentRegion If InStr(rng, "/") Then sr = Replace(rng, "/", vbCrLf, , 1) '换成换行符 'sr = Replace(rng, "/", "...