Excel VBA文本文件到二维数组

Excel VBA文本文件到二维数组,excel,vba,Excel,Vba,我是excel vba新手。我想读取一个包含如下文本的文本文件: John Smith Engineer Chicago Bob Alice Doctor New York Jane Smith Teacher St. Louis 所以,我想把它转换成一个2D数组,所以如果我打印(3,3),它应该返回'Teacher'。 我能够将整个文件内容读入一个字符串,但在将其转换为字符串时遇到困难 类似上面的二维数组。请就如何进行提供建议。谢谢除非文本文件有特定的结构,否则您会有点困难。可能使之更容

我是excel vba新手。我想读取一个包含如下文本的文本文件:

John Smith Engineer Chicago 
Bob Alice Doctor New York 
Jane Smith Teacher St. Louis
所以,我想把它转换成一个2D数组,所以如果我打印(3,3),它应该返回'Teacher'。 我能够将整个文件内容读入一个字符串,但在将其转换为字符串时遇到困难
类似上面的二维数组。请就如何进行提供建议。谢谢

除非文本文件有特定的结构,否则您会有点困难。可能使之更容易的事情有:

  • 文本文件是否在每行末尾包含换行符
  • 所有名称是否按照您的示例采用[FirstName][LastName]格式 或者有些人可能有更多/更少的词
  • 职业总是紧跟在名字后面吗
  • 职业(非常)有限吗

正如NautMeg所提到的,您必须根据提供的模板对数据进行一些假设

然而,我们可以假设:

  • 空格是分隔符
  • 最后一列是City,它可以包含一个空格
  • 共有4列
    • 名字
    • 职业
    • 城市/地点
使用此信息:

While Not EOF(my_file)
    Line Input #my_file, text_line
    // text_line contains the independent line
    i = i + 1
    // i is the line number
Wend
这是我们检索每一行的方式

Split ( Expression, [Delimiter], [Limit], [Compare] )
这将为您提供列表中的每个项目。对于索引<3(基于0的索引),它们是唯一的数据列,您可以根据需要处理它们。 对于索引>=3,将它们合并为一个字符串

Join( SourceArray, [Delimiter] )
在本例中,您可能希望将分隔符设为一个简单的空格,因为split函数将删除该空格

这将允许您按原样解析数据

但是,如果可以控制文本文件的导出,则应尝试将其导出为CSV文件,以供将来参考

祝你好运