戈登想知道如何根据特定字段的值将文本文件的子集导入Excel。例如,他可能只想导入文本文件中每个记录的第5列中包含“ y”的记录。

您可以通过几种方法来完成此任务。一种是您可以简单地导入整个文本文件,对记录进行排序,然后删除不需要的记录。如果您只需要处理一个文件,并且整个文件可以放在一个工作表中,那么这也许是最简单的选择。

另一种方法是使用宏。 (这是我发现最快和最简单的方法,尤其是在需要大量导入相同类型的文件的情况下。)宏可以打开文本文件,读取每一行,然后确定是否该行中的信息是否应该添加到工作表中。这是一个示例,该示例将打开一个名为“ MyCSVFile.txt”的文件,然后将数据粘贴到从第一行开始的新工作表中。

Sub ReadMyFile()

Dim R As Integer     Dim C As Integer     Dim sDelim As String     Dim sRaw As String     Dim ReadArray() As String

sDelim = ","     ' Set to vbTab if tab-delimited file

Worksheets.Add     Open "myCSVFile.txt" For Input As #1     R = 1     Do While Not EOF(1)

Line Input #1, sRaw         ReadArray() = Split(sRaw, sDelim, 20, vbTextCompare)

If ReadArray(4) = "y" Then             For C = 0 To UBound(ReadArray)

Cells(R, C + 1).Value = ReadArray(C)

Next C             R = R + 1         End If     Loop     Close #1 End Sub

要使用宏,只需更改文件名以匹配您要处理的文件即可。您还需要修改sDelim变量,以确保它与记录中用作定界符的变量匹配。按照书面说明,它假定定界符是逗号(将在CSV文件中),但是如果您实际上在使用制表符分隔的文件,则可以将其更改为vbTab。宏完成后,只有带有单个小写“ y”字符的记录才在新工作表中。

另一种方法是使用Excel的Power Query功能。这是Microsoft提供的免费外接程序,可用于Excel 2010和Excel 2013的某些变体。您可以在以下位置下载(并找出支持哪些变体):

http://www.microsoft.com/en-us/download/details.aspx?id=39379

如果您使用的是Excel 2016,则Power Query内置在程序中。

如果您的Excel版本中已安装Power Query或该版本中可用,并且该Excel版本恰好是Excel 2010或Excel 2013,则请执行以下步骤:

。显示功能区的“电源查询”选项卡。

。单击从文件|来自CSV。 Excel将显示“逗号分隔值浏览”对话框,该对话框非常类似于标准的“打开”对话框。

。找到并选择要导入Excel的CSV文件。

。单击打开。 Excel将数据加载到Power Query窗口中,该窗口具有可用于每个字段的筛选按钮。

如果您使用的是Excel 2016或更高版本,则步骤略有不同:

。显示功能区的“数据”选项卡。

。单击“获取和转换”组中的“新建查询”工具(Excel 2016)或“获取数据”工具(Excel的更高版本)。 Excel显示一些选项。

。单击从文件|从文本/ CSV。 Excel将显示“导入数据”对话框,该对话框非常类似于标准的“打开”对话框。

。找到并选择要导入Excel的CSV文件。

。单击打开。 Excel将数据加载到Power Query窗口中,该窗口具有可用于每个字段的筛选按钮。

此时,无论使用什么版本的Excel,都可以使用控件来指定查询(即,设置应导入哪些记录的定义)。当您单击关闭并加载时,将从文件中检索记录,并且可以保存查询以供将来使用。

第四种方法是使用Microsoft Query。为此,您需要遵循以下很长的步骤。 (从来没有人说过Microsoft希望使Microsoft Query易于使用,经过这些步骤后,您将同意。)

。显示功能区的“数据”选项卡。

。单击“获取和转换数据”组中的“获取数据”工具,然后选择“来自其他来源”(在Excel的早期版本的“获取外部数据”组中),然后选择“来自Microsoft Query”。 Excel将显示“选择数据源”对话框。 (请参见图1。)

。选择“新数据源”选项,然后单击“确定”。 Excel将显示“创建新数据源”对话框。 (请参见图2。)

。提供数据源的名称,例如“ CSV文件”。

。使用项目2的下拉列表,选择Microsoft Text Driver。

。单击连接。 Excel将显示“ ODBC文本设置”对话框。

。立即单击“确定”关闭对话框。

。单击“确定”关闭“创建新数据源”对话框。 Excel将更新“选择数据源”对话框,以包括您在步骤4中指定的名称。

。选择刚创建的数据源,然后单击“确定”。 Excel将显示警告,指出源中没有数据表。 (没关系;您还没有定义。)

。单击确定以消除该警告。 Excel将显示“查询向导”对话框。

。由于空白的“查询向导”对话框无法执行任何操作,因此请单击“取消”。 Excel将显示警告,询问您是否要保留在Microsoft Query中。

。单击是。 Excel将显示“添加表”对话框。

。使用对话框中的控件,找到并选择CSV文件。

。单击添加按钮。 Excel看起来没有任何作用,但实际上将引用添加到了CSV文件中。

。单击关闭按钮以关闭“添加表”对话框。您的CSV文件显示在Microsoft Query窗口中。

。使用CSV文件的字段列表,将要导入到工作表中的每个字段拖到Microsoft Query窗口的底部。 (如果需要所有字段,只需将星号拖到窗口的底部。)

。单击条件|添加条件。 Excel将显示“添加条件”对话框。 (请参见图3。)

。使用对话框中的控件,指定您希望字段5(无论名称如何)等于“ y”。

。单击添加按钮以将条件实际添加到查询中。

。单击“关闭”关闭“添加条件”对话框。

。单击文件|将数据返回到Microsoft Excel。 Excel将显示“导入数据”对话框。 (请参见图4。)

。根据需要更改对话框中的设置,以指示如何将CSV数据返回到Excel。

。单击确定。

(花了很长时间告诉您这些步骤。)现在,您可以在Excel中处理数据,并且,如果需要,可以使用功能区的“设计”选项卡上的工具从CSV文件刷新数据。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10384)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。