0

我有一系列(数千个)通话记录,我正在尝试创建一个电子表格。它们都在一个文本文件中。格式如下所示:

12/ 13/ 05 Syracuse, NY 10: 22 AM 111- 111- 1111 2 $ - $ - $ -
12/ 13/ 05 New York, NY 10: 28 AM 111- 111- 1111 (F) 2 $ - $ - $ -
12/ 13/ 05 Orlando, FL 10: 48 AM 111- 111- 1111 (F) 4 $ - $ - $ -

3/ 9/ 09 Internal 4: 51 PM 111- 111- 1111 (E) 23 $ - $ - $ -
10/ 14/ 11 Colorado Site 8: 12 AM 111- 111- 1111 14 $ - $ - $ -
1/ 3/ 12 Dept 27 3: 16 PM 111- 111- 1111 (F) 93 $ - $ - $ -

11/ 12/ 12 Internal 3: 13 PM 18765 (E) 16 $ - $ - $ -
11/ 14/ 12 Internal 11: 43 AM John Doe 3 $ - $ - $ -

月/日/年/呼叫城市,州 HH:MM APM 123- 456 7890 OptionalCode $Charge $Tax $Total

这是,减去细节,直接来自文件。字符串周围没有引号,没有制表符。我尝试在列中使用文本,但有些城市确实有空间,而另一些则没有。

有人想指出我正确的方向吗?RegEx 也许(我听说过但从未使用过)?还有什么?

更新: 感谢您的早期反馈。该行是我文件中的实际数据,尽管我删除了城市和电话号码。我已经更新了城市信息以显示那里的差异。据我所知,没有一个城市名称有逗号,但我处理的总行数接近 120,000 行,而且显然还没有检查所有行。

显然,这座城市并不总是有空间——上面的雪城没有,但纽约却有。月份和日期也不总是 2 位数字——这也会影响长度检查。不过,我可以先阅读,然后再阅读第二个正斜杠 - 这些是在日期和月份值之后固定的。

括号中的代码并不总是出现......有时它在那里,有时不存在,尽管它们在到达时似乎只是一个字母。

我希望这可以解决一些问题。如果一开始就正确存储,这会容易得多。叹。

更新 2,3 和 4根据 Robin 的请求,从通话记录更改中添加了几行。

4

2 回答 2

3

我知道您要求 VBA 解决方案,但我只在带有公式的电子表格中进行通话记录解析。

我在这里上传了一个工作簿解决方案(版本 3)

打开工作簿后,将文本文件的内容复制并粘贴到 cellA2中。然后根据需要填写范围B2:X2

这些公式适用于月、日、年、城市、州、时间、代码、费用、税金和总额的任何变化。

让我知道是否有任何线路中断。您可以通过使用标题中的自动筛选下拉菜单来选择错误/无关值来轻松检查这些内容。将任何有问题的行附加到您的问题中。

更新:

版本 2 处理了 City 字段包含位置名称而 State 字段为空白的情况。

版本 3 处理电话号码字段包含分机号码或姓名的情况。

于 2013-01-26T04:20:45.003 回答
1

如果城市名称中没有逗号,这样的事情可能会起作用。

Sub foo()
    thisLine = "12/ 13/ 05 City Name, ST 10: 28 AM 111- 111- 1111 (F) 2 $ - $ - $ -"
    thisDate = Mid(thisLine, 1, 10)
    thisLine = Mid(thisLine, 12)
    firstComma = InStr(1, thisLine, ",")
    City = Mid(thisLine, 1, firstComma - 1)
    thisLine = Mid(thisLine, firstComma + 2)
    State = Left(thisLine, 2)
    thisLine = Mid(thisLine, 4)
    thisTime = Left(thisLine, 9)
    thisLine = Mid(thisLine, 11)
    thisPhone = Left(thisLine, 14)
    thisLine = Mid(thisLine, 16)
    tempArray = Split(thisLine, "$")
    If UBound(tempArray) = 3 Then
    optionalCode = tempArray(0)
    charge = "$" & tempArray(1)
    tax = "$" & tempArray(2)
    Total = "$" & tempArray(3)
    Else
    ' throw an error something went wrong
    End If
End Sub
于 2013-01-26T00:58:34.737 回答