vba - 想要 Excel 中的 VBA 读取非常大的 CSV 并创建 CSV 小子集的输出文件

标签 vba csv excel

我有一个包含 120 万条文本记录的 csv 文件。字母数字字段用引号引起来,而日期/时间或数字字段则不然。

例如 "Fred","Smith",01/07/1967,2,"7, The High Street","Anytown","Anycounty","LS1 7AA"

我想要做的是在Excel中编写一些VBA(或多或少是我唯一可以使用的工具,我相当熟练地使用它),它按记录读取CSV记录,执行检查(就像它发生在最后一个字段,邮政编码),然后将 1.2m 记录的一小部分输出到新的输出文件。

我了解如何打开这两个文件,读取记录,对数据执行我需要执行的操作并将其写出(我将仅输出带有表示异常类型的前缀的输入记录)

我不知道如何正确解析 VBA 中的 CSV。我无法进行简单的文本扫描并搜索逗号,因为文本有时包含逗号(因此文本字段是文本分隔的)

是否有一个很棒的命令可以让我快速获取记录中第 n 个字段的数据?

我想要的是 s_work = field(s_input_record,5) 其中 5 是我的 CSV 中的字段编号...

非常感谢, C

最佳答案

VBScript 怎么样,虽然这也适用于 Excel:

Set cn = CreateObject("ADODB.Connection")

'Note HDR=Yes, that is, first row contains field names '
'and FMT delimted, ie CSV '

strCon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Docs\;" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"

cn.open strcon

'You would not need delimiters ('') if last field is numeric: '    
strSQL="SELECT FieldName1, FieldName2 INTO New.csv FROM Old.csv " _
& " WHERE LastFieldName='SomeTextValue'"

'Creates new csv file
cn.Execute strSQL

关于vba - 想要 Excel 中的 VBA 读取非常大的 CSV 并创建 CSV 小子集的输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/427488/

相关文章:

vba - Excel VBA 类型不匹配引用 Cell.Value

c# - CSVHelper 不解析我的制表符分隔的 CSV 文件

csv - 在 Create React App 中导入 .csv 文件时出现 "Cannot find module"

python - 中位数为 'modified' 的 Csv pandas groupby

excel - 如何在Excel中的多个工作表中删除重复值和原始值

arrays - 将 VBA 数组粘贴到 Excel 范围内

使用两个日期的 SQL 查询

vba - 通过电子邮件发送范围而不是行

excel - 使用Mybatis在两个Table中插入数据

java - 使用 Apache POI 库读取 Excel (xlsx) 文件会引发 NullPointerException