学习了。不过这个自定义函数有点小问题,版主漏考虑一种情况了。当文本中存在逗号时,第二个参数不能输入逗号来替换,只能在单元格中输入逗号,第二参数引用单元格,这样才能替换。
比如B1单元格输入含有逗号的字符串,abc,,,defghijklmn,,,
用公式=newtext(B1,","),结果不成功。
小改动了一下,如果第二个参数是逗号或者含有连续的两个及以上的逗号则表示替换逗号本身。
NewText.rar
(9.99 KB, 下载次数: 27)
- Option Explicit
- Function NewText(r As String, s As Variant, Optional ss = "")
- Dim i As Integer
- Dim myRange As Range
- Dim st, rng, test
-
- rng = r
-
- Select Case VBA.TypeName(s)
- Case "String"
-
- If s = "," Then
- NewText = VBA.Replace(rng, s, ss)
- Exit Function
- End If
-
- st = Split(s, ",")
-
- For i = 0 To UBound(st)
- If i < UBound(st) Then
- If st(i) = "" And st(i + 1) = "" Then
- test = VBA.Replace(rng, ",", ss)
- Else
- test = VBA.Replace(rng, st(i), ss)
- End If
- Else
- test = VBA.Replace(rng, st(i), ss)
- End If
-
- rng = test
- Next
- Case "Range"
- For Each myRange In s
- test = VBA.Replace(rng, myRange, ss)
- rng = test
- Next
- End Select
-
- NewText = test
- End Function
复制代码 |