如何用公式replace列的每个现有值?
我的表已经有数据。 不幸的是,后来我意识到列E中的所有值都应该通过调用我自己的用户定义的函数并将值作为函数参数进行必要的validation和更改。 例如,假设我在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支持正则expression式,我的问题很容易解决。 但不幸的是Excel不。 有人能为我的问题提出可能的解决scheme吗
提前致谢
1)插入一个新的列“F”
2)将列E复制到F中
3)写入E1
=RemoveBrackets(F1)
4)通过E7000拖动E1值
5)隐藏栏F.
编辑1
您可以使用查找/replacefunction进行多次操作:
在每个PASS之前selectE列。
通过1
Find: <"This is a text in> Replace with: <RemoveBrackets("This is a text in>
通过2
Find: <)"> Replace with: <)")>
通过3
Find: <RemoveBrackets(> Replace with: <=RemoveBrackets(>
编辑2
VB正则expression式replacestring函数可以从Excel中使用。
您可以下载支持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
类似belisarius的方法,但不留下痕迹:
- 插入F列
- 插入F1值
=RemoveBrackets(F1)
- 通过F7000复制。
- 复制栏F
- 右键单击单元格E1,select性粘贴,select“值”。
- 删除栏F