0

伙计们,我正在尝试使用 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
4

2 回答 2

1

或者,将文本文件视为数据源并对其进行查询。

使用 DAO: http: //msdn.microsoft.com/en-au/library/aa293458 (v=vs.60).aspx

使用 ADO:http: //msdn.microsoft.com/en-us/library/ms974559.aspx

于 2013-09-20T11:27:28.687 回答
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
....

如果您在条件句的布局上遇到问题,您需要提供更多关于 then 的信息,以便我们提供帮助 =)。

于 2013-09-20T04:29:19.550 回答