0

我有一个庞大的地址和详细信息列表,我需要将其转换为 Excel 电子表格,我认为最好的方法是读取数据,然后编写第二个文档来分隔各行,以便它们在识别空白行的同时以制表符分隔(数据条目之间)以保留每个单独的地址。

它的格式为:

地址A1
地址B1
邮编1 姓名1 电话
号码1

地址A2
地址B2
邮编2 姓名2 姓名2 电话
号码2


地址A3
地址B3
邮编3 姓名3 电话
号码3

因此,当一家公司有多个名称时,也会遇到困难,但我可以在必要时手动格式化这些名称(理想情况下,他们希望彼此使用相同的地址)。

然后,生成的文本文档希望以制表符分隔:名称|地址A|地址B|邮政编码|电话号码

我认为这在一个简单的 .bat 命令中最容易做到吗?或者我应该在 excel 中打开列表并通过它运行脚本..?

我在想,如果我可以运行将每个条目添加到数组($address $name 等)的位置,那么我可以使用它通过编写$name[i] 选项卡 $address[$i]等来构建一个新的文本文件

有数百个条目,事实证明,手动输入是……困难的。

.bat我在 MEL(基本上是 C++)方面有一些经验,所以我确实了解一般的编程,但在Excel(VB?)如何处理和定义空行和制表符方面有些茫然。

4

3 回答 3

0

这是一种仅使用 Word 和 Excel 的方法。我使用了您发布的数据。我假设 Name2 是唯一的可选字段。

  • 将文本粘贴到 Word 中。
  • 用特殊字符替换所有段落标记。(Ctrl-h,搜索 ^p,替换为 |)
  • 用不同的特殊字符替换所有换行符。(Ctrl-h,特殊字符,搜索手动换行符,替换为;)

这是它在 Word 中的样子:

AddressA1;AddressB1;Postcode1;Name1;PhoneNumber1|AddressA2;AddressB2;Postcode2;Name2;Name2;PhoneNumber2|AddressA3;AddressB3;Postcode3;Name3;PhoneNumber3||

然后将文本转换为表格(插入 -> 表格 -> 将文本转换为表格),用 ; 分隔。这给出了 1 列的 3 行(加上 2 个空白行)。

然后复制表格。

现在在 Excel 中:

  • 粘贴表格。(每行只有一行,所有字段都在 A 列中。)
  • 将文本转换为列(数据选项卡、文本到列、分隔、复选分号)
  • 按 E 列排序。电话号码应组合在一起。
  • 剪切E列中的电话号码并复制到F列。
于 2013-10-16T16:30:11.457 回答
0

任何可以跨多行进行正则表达式搜索和替换的文本编辑器都可以很好地完成这项工作。

我编写了一个名为 REPL.BAT 的混合 JScript/批处理实用程序,它在标准输入上执行正则表达式搜索和替换,并将结果写入标准输出。它是纯脚本,适用于从 XP 开始的任何现代 Windows 机器 - 不需要 3rd 方可执行文件。完整的文档嵌入在脚本中。

假设 REPL.BAT 在您的当前目录中,或者更好的是,在您的 PATH 中的某个位置,那么:

type file.txt|repl "\r?\n" "\t" mx|repl "\t\t" "\n" x|repl "^(([^\t]*\t){4})([^\t]*)$" "$1\t$3" x >newFile.txt

上面通过 3 个步骤修改文件并将结果写入新文件,保持原样不变:

  • 将所有换行符转换为制表符
  • 将连续的制表符转换为换行符
  • 在仅包含 5 列的任何行的最后一列之前插入一个空列(制表符)。
于 2013-10-16T14:50:20.463 回答
0

第一步是将数据导入 Excel 文件。数据导入后,我们可以重新打包以满足您的规格。第一步:

Sub BringFileIn()
    Dim TextLine As String, CH As String
    Close #1
    Open "C:\TestFolder\question.txt" For Input As #1
    Dim s As String
    Dim I As Long, J As Long
    J = 1
    I = 1
    Do While Not EOF(1)
        Line Input #1, TextLine
        Cells(I, J) = TextLine
        I = I + 1
    Loop
    Close #1
End Sub
于 2013-10-16T13:43:30.083 回答