Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何计算和记录具有特定月/年值的工作表中的行数_Vba_Excel_Dataset - Fatal编程技术网

Vba 如何计算和记录具有特定月/年值的工作表中的行数

Vba 如何计算和记录具有特定月/年值的工作表中的行数,vba,excel,dataset,Vba,Excel,Dataset,我下载了一个数据集,其中详细介绍了1979年1月至2004年12月期间在英国报告的所有车祸——这个文件是csv格式的,可以理解它相当大(确切地说是6224199行)。因为文件的大小超过了Excel 2010可以处理的行数,所以我必须将文件拆分为更小的行,以便在Excel中一次打开所有行。我尝试使用记事本和记事本++,但记事本崩溃了,记事本++拒绝打开这么大(720MB)的文件。我曾考虑过使用类似于定界的Excel替换,但它不支持宏。 现在,忽略规模问题,我需要计算每个月的车祸总数,并记录下来。有

我下载了一个数据集,其中详细介绍了1979年1月至2004年12月期间在英国报告的所有车祸——这个文件是csv格式的,可以理解它相当大(确切地说是6224199行)。因为文件的大小超过了Excel 2010可以处理的行数,所以我必须将文件拆分为更小的行,以便在Excel中一次打开所有行。我尝试使用记事本和记事本++,但记事本崩溃了,记事本++拒绝打开这么大(720MB)的文件。我曾考虑过使用类似于定界的Excel替换,但它不支持宏。
现在,忽略规模问题,我需要计算每个月的车祸总数,并记录下来。有一列可以指定每次崩溃的日期,但行不会根据崩溃日期排序。我曾考虑使用CTRL+F来计算具有特定月/年值的行数,然后记录每次搜索的结果数,但考虑到数据跨度为25年,我必须手动搜索并记录300个月的结果。

我同意Jeanno和Brad的观点,对于这种类型的需求,Access是比Excel更好的工具。然而,我想知道用Excel读取如此大的文件是否会有一个实际的持续时间

我连接了一些大的文本文件,创建了一个663MB的文件,我认为这个文件足够近了。下面的宏读取文件的每一行,并将其拆分为可供分析的字段。注意:我的文件使用“|”作为分隔符,而不是“,”

宏在100秒多一点的时间内读取7782013条记录。Access仍然是更好的选择,但如果Access不可用,则Excel是可行的

注意:此宏需要引用“Microsoft脚本运行时”


您最好使用Access访问此类文件。导入文本文件很简单,请在Access中打开此文件。您的任何问题都可以通过查询来回答。如果数据在Access中,您仍然可以使用Excel,如果您真的需要,可以使用具有外部(Access)数据源的透视表
Sub ReadAndSplit()

  Dim FileStream As TextStream
  Dim FileSysObj As FileSystemObject
  Dim Line As String
  Dim LinePart() As String
  Dim NumLines As Long
  Dim TimeStart As Double

  TimeStart = Timer

  Set FileSysObj = CreateObject("Scripting.FileSystemObject")
  NumLines = 0

  ' 1 means open read only
  Set FileStream = FileSysObj.OpenTextFile(ThisWorkbook.Path & "\Test4.txt", 1)

  Do While Not FileStream.AtEndOfStream
    Line = FileStream.ReadLine
    NumLines = NumLines + 1
    LinePart = Split(Line, "|")
  Loop

  FileStream.Close

  Debug.Print NumLines
  Debug.Print Timer - TimeStart

End Sub