Excel 删除单元格中以字符串开头、以字符结尾的文本

Excel 删除单元格中以字符串开头、以字符结尾的文本,excel,vba,Excel,Vba,我一直在努力想如何删除以某个文本开头、以字符结尾的文本: 我在Excel中有一个单元格,可以包含字符串: [#1-一些文字][#4-一些其他文字][#7-一些其他文字] 或 [#4-更多文本][#7-更多文本] 我需要删除[#4-更多文本],但保留其余文本 视觉: 我想使用VBA删除“[#4-更多文本]”,但该字符串可能不同,该字符串将 始终以“[#”开头 然后是一个数字(在不同的搜索中可能会有所不同,但我可以通过编程获得) 然后是“-”(破折号) 然后是一些不同的文本 然后以“]”结尾

我一直在努力想如何删除以某个文本开头、以字符结尾的文本:

我在Excel中有一个单元格,可以包含字符串:

[#1-一些文字][#4-一些其他文字][#7-一些其他文字]

[#4-更多文本][#7-更多文本]

我需要删除[#4-更多文本],但保留其余文本

视觉:

我想使用VBA删除“[#4-更多文本]”,但该字符串可能不同,该字符串将

  • 始终以“[#”开头
  • 然后是一个数字(在不同的搜索中可能会有所不同,但我可以通过编程获得)
  • 然后是“-”(破折号)
  • 然后是一些不同的文本
  • 然后以“]”结尾
我正在以编程方式创建第一部分“[#4-”(因为数字可能会改变),代码段总是以方括号结尾,中间的文本可能会有所不同

我尝试过调整多个其他帖子: 但我似乎做不好

有没有人能帮我或告诉我类似的情况


谢谢!

Regext应该能帮到你

Sub test()

    Dim s As String

    s = "[#1-Some text][#4-some more text][#7-Some additional text]"

    Dim objRegex As Object
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Pattern = "\[#4-[a-zA-Z ]+\]"
        .ignorecase = True
        Debug.Print .Replace(s, vbNullString)
   End With

End Sub

[#4-更多的文本]并不总是相同的,但总是以方括号、符号、数字和破折号开始……然后是一些文本……然后以方括号结束。它们都以[可以更改的数字-,并且包含#s right?开头,并且都以][#…等等。如果没有一个更好更清晰的excel示例,很难看到发生了什么,你能稍微编辑一下吗?。但是计算单元格中['s或]]的数量可以给你一个关键/线索。David,刚刚编辑过,希望有助于澄清你的需求,但拆分函数对你有用吗?
Splt(YourText,“[#”)(X)
其中
X
是元素号。要正确使用它,可以将其放入一个变量数组,如
MyArr=Splt(YourText,[#”)
中,然后可以使用数组的边界来查找最后一个数组,如
msgbox MyArr(ubound(MyArr))
这将显示最后一个元素。将ubound更改为lbound将显示第一个元素。哇,原来这是拆分文本和获取剩余长度的组合,这要感谢你们两位引导我朝着正确的方向前进。我忙于尝试使其他解决方案工作,忽略了简单性。我将更新当我清理完我的代码后,我的答案是-谢谢!!我用组合Split和Len(和Right$)实现了它,但是这也起了作用,谢谢!