各位,我正在尝试使用 VBA 将一个非常大的空格分隔文本文件读取到 Excel 电子表格中。 该文本文件包含 5 列数据,这些数据由多个空格分隔。 我已成功打开该文件并将其拆分为各个列。 现在我想仅选择满足特定条件的行作为电子表格的输出。 因此,例如,我只想选择第一列中是 DIES 且第二列中是 EUR 的行。 关于如何有效地实现这一目标有什么建议吗? 我尝试了 If/Else 语句的各种组合,但这似乎不起作用。 谢谢你。
文本文件
DIES EUR REFGR OCT2008 847.000
VARS EUR REFGR NOV2008 154.000
EFFS OECD REFGR DEC2008 507.000
DIES EUR REFGR JAN2008 090.000
USUE EUR REFGR FEB2008 836.000
到目前为止我的代码
Sub ImportData()
Open "FileName" For Input As #1
lRow = 2
Do While Not EOF(1)
Line Input #1, Data
Data = Application.WorksheetFunction.Trim(Data)
sData = Split(Data, " ")
With Sheet1
lColumn = 2
For intCount = LBound(sData) To UBound(sData)
.Cells(lRow, lColumn) = sData(intCount)
lColumn = lColumn + 1
Next intCount
End With
lRow = lRow + 1
Loop
Close #1
End Sub
或者,将文本文件视为数据源并对其进行查询。
使用DAO: http://msdn.microsoft.com/en-au/library/aa293458(v=vs.60).aspx
使用ADO: http://msdn.microsoft.com/en-us/library/ms974559.aspx
我会去做类似的事情。您可以编写一个函数来决定是否应该将一行写入文件。
function IsValid(stringArray as string()) as boolean
' Your criteria goes here, maybe with case/switches or lots of ifs
end function
那么你的代码将是这样的:
...
With Sheet1
lColumn = 2
if IsValid(sData) then
For intCount = LBound(sData) To UBound(sData)
.Cells(lRow, lColumn) = sData(intCount)
lColumn = lColumn + 1
Next intCount
end if
End With
....
如果您的条件布局有问题,您需要提供更多信息,以便我们可以提供帮助 =)。
我有一个文本文件,需要从中提取某些数据。有人可以帮忙吗