我的工作表已有数据。不幸的是,后来我意识到E列中的所有值都应该通过调用我自己的用户定义函数并将值作为函数参数传递来验证和更改。例如,假设我在E栏中有以下数据:
E1: "This is a text in (E1)"
E2: "This is a text in (E2)"
...
E7000: "This is a text in (E7000)"
现在,我希望E列中的每个值都可以通过如下公式进行更改:
E1: = RemoveBrackets("This is a text in (E1)")
E2: = RemoveBrackets("This is a text in (E2)")
...
E7000: = RemoveBrackets("This is a text in (E7000)")
假设Excel支持Regex,我的问题可以轻松解决。但遗憾的是Excel没有。有人可以为我的问题提出可能的解决方案吗?
提前致谢
答案 0 :(得分:2)
1)插入新列“F”
2)将列E复制到F
3)写入E1
=RemoveBrackets(F1)
4)将E1值拖动到E7000
5)隐藏F列。
您可以通过多次查找/替换功能来完成此操作:
在每次通过前选择E列。
通行证
Find: <"This is a text in>
Replace with: <RemoveBrackets("This is a text in>
PASS 2
Find: <)">
Replace with: <)")>
通过3
Find: <RemoveBrackets(>
Replace with: <=RemoveBrackets(>
可以在Excel中使用VB Regex替换字符串函数 您可以下载支持REGEX.SUBSTITUTE udf的工具包,例如Morefunc,或者您可以使用THIS作为指导来执行您自己的udf。
我在这里发布第二个引用的代码,仅用于链接独立性:
Public Function SearchNReplace1(Pattern1 As String, _
Pattern2 As String, Replacestring As String, _
TestString As String)
Dim reg As New RegExp
reg.IgnoreCase = True
reg.MultiLine = False
reg.Pattern = Pattern1
If reg.Test(TestString) Then
reg.Pattern = Pattern2
SearchNReplace1 = reg.Replace(TestString, ReplaceString)
Else
SearchNReplace1 = TestString
End If
End Function
请阅读完整文章,因为您应首先在Excel中打开Microsoft VBScript Regular Expressions 5.5选项。
HTH
答案 1 :(得分:1)
与belisarius的方法类似,但没有留下痕迹:
=RemoveBrackets(F1)