删除出现在两个字符之间的文本 – 多个实例 – Excel
在Microsoft Excel文件中,我有一个行中的文本,如下所示:
1. Rc8 {[%emt 0:00:05]} Rxc8 {[%emt 0:00:01]} 2. Rxc8 {[%emt 0:00:01]} Qxc8 {} 3. Qe7# 1-0
我需要删除出现在花括号{
和}
中的任何文本,包括括号本身。
在上面的例子中,有三个这样的花括号的例子。 但有些行可能不止于此。
我尝试了=MID(LEFT(A2,FIND("}",A2)-1),FIND("{",A2)+1,LEN(A2))
这将输出到: {[%emt 0:00:05]}
。 正如你所看到的,这是花括号之间的第一个文本实例。
如果我们在这样的SUBSTITUTE内使用这个: =SUBSTITUTE(A2,MID(LEFT(A2,FIND("}",A2)),FIND("{",A2),LEN(A2)),"")
我得到这样的输出:
1. Rc8 Rxc8 {[%emt 0:00:01]} 2. Rxc8 {[%emt 0:00:01]} Qxc8 {} 3. Qe7# 1-0
如果您注意到,只有一个实例被删除。 我如何使它适用于所有实例? 谢谢。
没有VBA就不那么容易,但还是有办法的。
或者(正如yu_ominae所build议的),只需使用这样的公式并自动填充:
=IFERROR(SUBSTITUTE(A2,MID(LEFT(A2,FIND("}",A2)),FIND("{",A2),LEN(A2)),""),A2)
另一种方法是迭代计算(进入选项 – >公式 – >检查“启用迭代计算”button)
要在一个单元格中执行此操作,需要1个辅助单元(对于我的示例,我们将使用C1
),并在B2中使用像这样的公式并自动填充:
=IF($C$1,A2,IFERROR(SUBSTITUTE(B2,MID(LEFT(B2,FIND("}",B2)),FIND("{",B2),LEN(B2)),""),B2))
在C1中放置“1”,在B:B中的所有公式将显示A:A的值。 现在去C1,敲几次Del键(你会看到“{}” – 部分消失),直到看起来像你想要的。
编辑 :要做到这一点通过VBA,但没有正则expression式,你可以简单地把它放到一个模块:
Public Function DELBRC(ByVal str As String) As String While InStr(str, "{") > 0 And InStr(str, "}") > InStr(str, "{") str = Left(str, InStr(str, "{") - 1) & Mid(str, InStr(str, "}") + 1) Wend DELBRC = Trim(str) End Function
然后在工作表中直接使用:
=DELBRC(A2)
如果您还有任何问题,请询问;)
尝试用户定义的function。 在VBA中创build“Microsoft VBScript Regular Expressions 5.5”的引用,然后将此代码添加到模块中。
Function RemoveTags(ByVal Value As String) As String Dim rx As New RegExp rx.Global = True rx.Pattern = " ?{.*?}" RemoveTags = Trim(rx.Replace(Value, "")) End Function
在单元格的工作表中input: =RemoveTags(A1)
或任何您想要删除文本的地址。
如果你想在VBA中testing它:
Sub test() Dim a As String a = "Rc8 {[%emt 0:00:05]} Rxc8 {[%emt 0:00:01]}" Debug.Print RemoveTags(a) End Sub
输出“Rc8 Rxc8”
突出显示所有内容去replace在文本中input{*}以将空白replacereplace为空白
这应该取代所有的花括号和它们之间的任何东西