Excel VBA:我想从单元格中引用引号之间的文本。

时间:2016-02-26 15:04:03

标签: excel vba excel-vba

所以说我有一个包含以下文字的单元格:

The man "BOB" leaves his "home".

我如何制作它以便细胞只是说

The man leaves his home

我知道有很多方法可以做到这一点,但它们似乎都不容易。我可以创建一个do循环,逐个字符地检查每个单元格,并删除那样的引号。

我还可以创建一个文本到列宏,所以它看起来像这样:

The man Bob leaves his Home

但我的问题是如何找出我需要删除的文本。我意识到,当提取单词时,我的例子毫无意义。我猜这里有一个我忘记的公式或其他东西?

1 个答案:

答案 0 :(得分:1)

我不确定这是否可以做到"轻松"使用excel的内置功能。但是,您可以通过使用VBA代码实现此目的。在模块中,您可以编写如下函数:

Public Function ReplaceInQuotes(ByVal str)
    Set regex = CreateObject("vbscript.regexp")
    regex.Global = True
    regex.IgnoreCase = True
    regex.Pattern = """.+?"""
    Dim result
    result = regex.Replace(str, "")
    regex.Pattern = "\s+"
    result = regex.Replace(result, " ")
    ReplaceInQuotes = result
End Function

要调用上面的函数,你可以编写一个像这样的小子:

Public Sub main()
    Cells(1, "B").Value = ReplaceInQuotes(Cells(1, "A").Value)
End Sub

所以,让我们说如果你的单元格A1中有你的字符串,那么在执行main子程序后你就会得到你的结果。函数ReplaceInQuotes与正则表达式一起使用,因此您可能需要稍微操作它来处理一些" double"可能出现的空格。