【问题标题】:Best way to handle large .csv files in Excel? [closed]在 Excel 中处理大型 .csv 文件的最佳方法是什么? [关闭]
【发布时间】:2018-04-25 16:06:10
【问题描述】:

我必须使用 Excel 对 80-100mb 左右的 .csv 文件进行数据分析。为了加快这个过程,我正在尝试创建一个工具来自动化其中的一些过程,但是因为它处理大量数据(大约 500k 行),所以最初尝试读取文件时速度非常慢.

有没有人有任何我可以使用的建议?我目前正在使用一个按钮让用户选择和加载文件。为此,我已将代码放在下面。

Dim ws As Worksheet, fileNm As String, fileName As String

Dim FSO As Scripting.FileSystemObject

Set FSO = New FileSystemObject

Set ws = ActiveWorkbook.Sheets("CSV Data")

fileNm = Application.GetOpenFilename("CSV Files  (*.csv),*.csv", , "Please select CSV file...")

If fileNm = "False" Then

    Exit Sub

Else

With ws.QueryTables.Add(Connection:="TEXT;" & fileNm, Destination:=ws.Range("A1"))
    .TextFileParseType = xlDelimited
    .TextFileCommaDelimiter = True
    .Refresh
End With

End If

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我建议您查看 PowerQuery。它旨在将大数据加载和操作到 Excel。

    转到Data 功能区并单击"Get Data"-->"From File"-->"From Text/CSV"

    在即将出现的窗口中选择您的文件,然后单击“导入”。在新窗口中,您可以选择“加载”,这将按原样导入数据,或“编辑”,您应该这样做。

    现在您位于 PowerQuery 编辑器中,您可以在其中操作数据,例如重命名列、删除/添加列、更改类型或数学运算。

    有关 power query 的功能及其工作原理的概述,请参阅来自 https://www.excelcampus.com 的说明,该说明通常有很好的教程。

    对于 Power Query,请转到 here

    【讨论】:

    • 谢谢,这很有帮助:)
    • 非常欢迎。如果您对 PowerQuery 有任何疑问,我也很乐意为您提供帮助。但也许这里有人也有一种很好的 VBA 方式来处理 CSV
    【解决方案2】:

    至少就将数据加载到 Excel 而言,如果您不需要实时连接到数据,则执行以下操作可能更有效:

    1. 打开到文本文件的 ADO 连接
    2. 对文本文件执行 SQL 语句,返回 ADO 记录集。您还可以仅包含特定列,或者在返回数据之前使用 SQL 语句重新调整数据(过滤、分组、排序)
    3. 使用 Excel 的 CopyFromRecordset 方法将数据粘贴到工作表中

    类似于this的东西;虽然来源是另一个 Excel 工作簿,但原理是一样的。

    关于你提到的其他问题:

    • 删除列 -- 您的 SQL 语句只能选择您需要的列
    • 为某些行着色 -- 条件格式可能更有效?

    【讨论】:

    • 谢谢泽夫。我真的不需要与数据的实时连接,因为它们只是从导出生成的 .csv 文件的集合,而不是在实时数据库中。不敢相信我忘记了条件格式!肯定会使用它。
    • @MattGriffin 没有经验,但条件格式在上下滚动时可能会消耗大量 CPU。如果是这种情况,我会尝试先设置条件格式,然后以某种方式将生成的格式粘贴到所有单元格中。
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2020-12-15
    • 2014-02-11
    • 2015-01-19
    • 1970-01-01
    • 2018-12-03
    • 2020-03-16
    • 2019-01-30
    相关资源
    最近更新 更多