VBA 根据条件将文本文件读取到 Excel 电子表格中

问题描述 投票:0回答:3

各位,我正在尝试使用 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
vba criteria
3个回答
1
投票

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

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

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


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
....

如果您的条件布局有问题,您需要提供更多信息,以便我们可以提供帮助 =)。


0
投票

我有一个文本文件,需要从中提取某些数据。有人可以帮忙吗

© www.soinside.com 2019 - 2024. All rights reserved.