伙计们,我正在尝试使用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
答案 0 :(得分:1)
或者,将文本文件视为数据源并进行查询。
使用DAO: http://msdn.microsoft.com/en-au/library/aa293458(v=vs.60).aspx
使用ADO: http://msdn.microsoft.com/en-us/library/ms974559.aspx
答案 1 :(得分:0)
我会选择那样的东西。您可以编写一个函数来决定是否应该将一行写入文件。
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
....
如果你的条件布局有问题,你需要提供更多信息,以便我们可以帮助=)。