vba代码提取3个单词之前和3个单词之后的某个单词,并创建一个新的列,其中包含这6个单词的每一行

时间:2015-10-05 15:14:19

标签: vba excel-vba excel

我正在寻找一个vba代码来提取3个单词之前和3个单词之后的单词。例如:C6包含" Blah blah。这五个红苹果是如此好等等等等#34;。所以这里"苹果"是某个词。所以新专栏应该有#34;这五个红苹果非常好"。如果有像" Blah Blah这样的话。这些苹果真是太好了等等等等。然后它应该只提取"这些苹果非常好"不应考虑之前或之后的任何事情。如果可能的话,苹果的任何扩展应该被视为特定的单词。我在python中看到了一些代码,但这可能在vba代码和可能的vba代码中。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

似乎是一个有效的正则表达式应用程序和SO的问题(虽然它可以使用重写并显示更多尝试的东西)。试一试。从A列中的文字开始,如下所示:

enter image description here

" Microsoft VBScript正则表达式5.5"

添加对项目的引用

然后运行此代码:

Private Sub splitUpRegexPattern()
    Dim regEx As New RegExp
    Dim strPattern As String
    Dim Myrange As Range

    Set Myrange = ActiveSheet.Range("A1:A3")

    For Each c In Myrange
        strPattern = "(?:\w+\W+){3}(apples)\W+(?:\w+\W+){3}"

        If strPattern <> "" Then
            With regEx
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = strPattern
            End With

            Set matches = regEx.Execute(c.Value)
            On Error Resume Next
            c.Offset(0, 1).Value = matches.Item(0)
        End If
    Next c
End Sub

结果:

enter image description here

在VBA中需要Regex的帮助?查看this post即可开始使用。