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