我有一系列(成千上万)的通话记录,我试图创建一个电子表格。它们都在文本文件中。格式如下:
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 $ - $ - $ -
月/日/年/城市呼叫,STATE HH:MM APM 123- 456 7890 OptionalCode $ Charge $ Tax $ Total
这是减去细节,直接来自文件。字符串周围没有引号,没有标签。我试图将文字用于专栏,但有些城市确实有空间而其他城市则没有。
有人想指出我正确的方向吗? RegEx也许(我听说但从未使用过)?还有别的吗?
更新 感谢您的早期反馈。该行是我文件中的实际数据,但我删除了城市和电话号码。我已更新了城市信息,以显示那里的差异。我可以看到,没有一个城市名称有逗号,但我总共处理了近120,000行,显然,我们都没有检查过它们。
这座城市显然不会总是有空间 - 但是,Syracuse不会,纽约也是如此。月份和日期也不总是2位数 - 这也会导致检查长度。我可以先读取,然后读取第二个正斜杠 - 这些都是在日期和月份值之后修复的。
括号中的代码并不总是出现......有时它会出现,有时候不会出现,但是当它们到达时似乎只有一个字母。
我希望这可以解决一些问题。如果首先正确存储,这将更容易。叹息。
更新2,3& 4 根据Robin的请求在通话记录更改中添加了几行。
答案 0 :(得分:3)
我知道您要求提供VBA解决方案,但我的呼叫记录仅在包含公式的电子表格中进行解析。
我上传了工作簿解决方案here (version 3)。
打开工作簿后,将文本文件的内容复制并粘贴到单元格A2
中。然后根据需要填写范围B2:X2
。
公式适用于月,日,年,城市,州,时间,代码,费用,税金和总金额的任何变化。
让我知道是否有任何线条破裂。您可以使用标题中的AutoFilter下拉列表轻松检查这些内容,以选择错误/无关值。在您的问题中附加任何违规行。
<强>更新强>
版本2负责“城市”字段包含位置名称,“状态”字段为空白的情况。
版本3负责电话号码字段包含分机号码或名称的情况。
答案 1 :(得分: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