我有一个包含 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/