【问题标题】:Excel VBA custom split stringExcel VBA 自定义拆分字符串
【发布时间】:2018-11-20 14:36:22
【问题描述】:

我有带有字符串的单元格,我需要从中提取信息以最终粘贴到其他单元格中。请参阅下面的代码片段。

字符串的结构:

"sub-string part 1 <variable1> sub-string part 2 <variable2> sub-string part 3 <variable3>"

我希望将字符串拆分为一个数组,以便每个sub-string part 和每个<variable> 都是数组的一个元素。所以尖括号<...>之间的任何东西都是一个变量

resultArray(): {"sub-string part 1", "<variable1>", "sub-string part 2", "<variable2>", "sub-string part 3", "<variable3>}

字符串可以任意排列:

  1. "sub-string part 1 <variable1> sub-string part 2 <variable2> sub-string part 3 <variable3> sub-string part 4"

  2. "<variable1> sub-string part 1 <variable2> sub-string part 2 <variable3>"

  3. "<variable1> sub-string part 1 <variable2> sub-string part 2 <variable3> sub-string part 3"

  4. “这个字符串没有变量”(在这种情况下,只有一个元素会与整个字符串一起返回)

我可以使用正则表达式构建一个仅包含<variable> 的数组,但我无法拆分它,以便子字符串和变量都是数组的一个元素。

从 excel 的角度来看,我正在尝试根据 A 列自动填充 B 列中的内容

【问题讨论】:

  • 欢迎来到 Stack Overflow。请注意,由于这不是免费的代码编写服务,因此有必要显示您迄今为止尝试过的内容以及遇到的问题或错误(通过显示您的代码),或者至少显示您的研究内容和所做的努力.否则,它只是要求我们为您完成所有工作。阅读How to Ask 可能会帮助您改进您的问题。
  • 实际上,我没有发现使用正则表达式将其拆分为数组的问题。请参阅regex101.com/r/BGOYSm/2中的第 1 至 7 组
  • 谢谢,但由于我对正则表达式的了解有限,我不知道如何。我不是在寻找特定的字符串,例如(你的名字是 )。这可以是任何东西。我不知道子字符串是什么,也不知道尖括号之间的变量名是什么。我所知道的是,任何以方括号开头和结尾的东西都是一个变量,并且有点充当分隔符来分割我的字符串。相同的正则表达式需要应用于上面示例中的单元格 A2 和 A8,并在 B 列中产生结果。到目前为止,如果我使用正则表达式 \<.> 它会提取我的变量,但我需要找到如何获取休息
  • 好吧,即使使用正则表达式也是可能的:regex101.com/r/BGOYSm/3 请注意,正则表达式标志设置为“不贪婪”/gmU
  • 谢谢!这有帮助。

标签: arrays excel vba parsing csv


【解决方案1】:

我们可以进行特殊类型的解析。首先转换:

到:

|

然后转换:

>

到:

>|

然后使用管道解析:

Sub SpecialParser()
    Dim s As String, arr
    With ActiveCell
        s = .Value
        s = Replace(Replace(s, "<", "|<"), ">", ">|")
        arr = Split(s, "|")
        .Offset(0, 1).Resize(1, UBound(arr) + 1).Value = arr
        If .Offset(0, 1).Value = "" Then .Offset(0, 1).Delete Shift:=xlToLeft
    End With
End Sub

【讨论】:

  • 太棒了!谢谢。
猜你喜欢
  • 2012-01-04
  • 1970-01-01
  • 2013-09-05
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
相关资源
最近更新 更多