【发布时间】:2026-01-23 18:45:01
【问题描述】:
我使用 VBA 将 csv 文件从 Yahoo Finance 导入到 excel 中,其中每行包含 7 个逗号分隔值。我只想导入每行的第一个和第五个逗号分隔值。目前我导入整个 csv,将其提取到列中,然后删除不需要的列。但是,这不足以满足此导入的未来使用。如何选择要导入的列??
当前代码:
qURL = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol & "&a=" & Month(Startdate) - 1 & "&b=" & Day(Startdate) & _
"&c=" & Year(Startdate) & "&d=" & Month(Enddate) - 1 & "&e=" & Day(Enddate) & "&f=" & Year(Enddate) & "&g=" & QuoteInterval & "&ignore=.csv"
With Sheets(2).QueryTables.Add(Connection:="URL;" & qURL, Destination:=ActiveCell.Offset(1, 0))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Sheets(2).Range("A2:A" & Lastrow).TextToColumns Destination:=Sheets(2).Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Columns(2).EntireColumn.Delete
Columns(2).EntireColumn.Delete
Columns(2).EntireColumn.Delete
Columns(3).EntireColumn.Delete
Columns(3).EntireColumn.Delete
Range("A3:A" & Lastrow).NumberFormat = "dd mmm yy"
Range("B3:B" & Lastrow).NumberFormat = "0.00"
【问题讨论】:
-
我不确定是否有更好的解决方案,所以我将其作为评论留下,首先从最大索引中删除您的列,如后退。这样,它将使您的列删除更清晰。您不会拥有多个
Columns(2)和Columns(3)。只需删除 7,6,4,3,2。