Excel VBA从两个不同的文本文件中提取信息

时间:2014-06-23 19:19:21

标签: excel vba excel-vba

问候,有点困境。我正在创建一个VBA,允许用户打开两个单独的文本文件并使用它们来绘制数据图形。到目前为止,我已经成功地在一个电子表格中打开了两个文本文件。我遇到的问题是使用来自一个文本文件(12位数字)的数据,并将其与另一个文本文件(即数据日志)进行比较。第一个文本文件有一堆无关的信息,但我只需要记录日期和12位数字。第二个文本文件有一个12位数的列表,我想根据第一个文本文件检查,并计算每个特定数字出现的次数。使用它,我想要经常计算它发生的次数。我需要这个是VBA,因为打开这个宏的用户将没有任何编程知识,所以它需要非常简单。

另外需要注意的是,徽章编号可能因上传的文本文件而有所不同,但它们总是添加在电子表格的同一位置。

感谢。

编辑:试图粗略勾勒出我正在谈论的内容

  |  A  |  B              |  C           |              D         |                     

  |  1  | DATA WITH NUMBER|   ...........|........... |NUMBER TO COMPARE WITH |  
  |  2  | DATA WITH NUMBER|

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全掌握了你想要的内容,但听起来你想在VBA中使用Dictionary类。

您需要添加对MS Scripting Runtime库的引用,并且您读取第二个输入文件(计算出现次数)的代码可能如下所示:

  Dim counts As Object
  Dim splitValue As Variant
  Dim inputLine as String

  Set counts = CreateObject("Scripting.Dictionary")

  Open "yourfile.txt" For Input As #1
  Do While Not EOF(1)
    Line Input #1, inputLine

    splitValues = Split(inputLine, vbTab)

    If counts.Exists(splitValues(0)) Then
      counts(splitValues(0)) = counts(splitValues(0)) + 1
    Else
      counts.Add splitValues(0), 1
    End If

  Loop

  Close #1

然后,当您阅读第一个文件时,您实际上可以调用字典来查找第二个文件中出现的徽章编号的出现次数。

occurrences = counts(badgeNumber)

同样,我可能会离开。如果您可以澄清两个输入看起来是什么以及您希望最终输出看起来像什么,那么它会有所帮助。