使用Excel中的段落从单元格中提取特定数据

时间:2015-06-23 04:59:05

标签: excel vba excel-formula extraction

您好,我的问题是我有一个大型电子表格从outlook导出,其中包含一些我想从notes列中检索的数据。

因为当outlook出口联系信息时,它将每个人在一个单元格中的注释字段中的所有文本放在一起,我希望能够为每个人提取注释字段中的价格和电话号码并将它们放置分别在他们自己的专栏中。

我遇到的问题是这些段落的长度各不相同,段落中可能还有多个电话号码或价格。

我已尝试使用 =MID(A1,FIND("$",A1),8) 来取消价格,但价格可能会有所不同。

我不确定如何取出电话号码。

抱歉,我对这种事情有点新意,如果我遗漏了一些东西,请原谅我的无知。

(编辑)

单元格列的信息类型如下,我试图将$ amount和电话号码输出到自己的列中,每个单元格都会有不同的变化和长度的音符。

" 04/08/13 - ****** 在2013年8月4日通过电子邮件发送并致电约书亚,并希望注册***营销计划,收取CDN $ 399.00 + HST。是否需要短信市场报价程序。在306 555 5555服务提供商sasktel 04/22/13 - ***** *****发送电子邮件询问用户名和密码,****给他发了一封电子邮件。"

目前我使用上面的公式来提取价格,然后我手动将其输入到它所属的字段中。对于电话号码和任何其他信息,我一次转录一个小区。

1 个答案:

答案 0 :(得分:0)

您需要使用正则表达式来处理这类数据。

首先,您需要将模块添加到VBA项目并粘贴以下代码:

Public Function RegexReplace(needle, haystack, replacement)

    Dim regex
    Set regex = CreateObject("VBScript.RegExp")

    regex.Pattern = needle
    regex.Global = true
    regex.IgnoreCase = true

    RegexReplace = regex.Replace(haystack, replacement)

End Function

价格:=RegexReplace(A1, "[^\$]+([0-9\.]+).+", "$1")

电话号码:=RegexReplace(A1, ".+([0-9]{3} [0-9]{3} [0-9]{4}).+", "$1")

这两个正则表达式都相当天真,而且非常脆弱。只有在价格和电话号码格式与您的示例完全相同时,它们才会匹配。

以下是关于匹配phone numberscurrency主题的几个问题。