我使用web查询工具在电子表格中导入一个表。考虑到我想多次查询该网站,我录制了一个宏,将web查询转换为VBA格式,然后在循环中使用它来下载我需要的表。
通过这样做,我注意到excel网络查询做了一些奇怪的事情(显然对我来说(。它从数据源通过硬编码日期来转换列标题。如果头是静态的,这不会是一个问题,但考虑到它们会改变,如果我保持代码的原样,这将是一个麻烦。
我想知道是否有一种方法可以在VBA中概括web查询所做的数据转换,以便正确导入数据和日期
你可以在下面找到网络查询的代码
"let" & Chr(13) & "" & Chr(10) & " Source =
Web.Page(Web.Contents(""https://fred.stlouisfed.org/release/tables?
rid=53&eid=783269#snid=783270""))," & Chr(13) & "" & Chr(10) &
" Data0 = Source{0}[Data]," & Chr(13) & "" & Chr(10) &
" #""Changed Type"" = Table.TransformColumnTypes(Data0,{{"""", type text},
{""Q3 2020"", type number}, {""Q2 2020"", type number}, {""Q3 2019"", type
number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "
#""Changed Type"""
您可以确定当前列名,并自己创建转换列表。
例如:
colNames = Table.ColumnNames(Data0),
colTypes = {type text, type number, type number, type number},
#"Changed Type" = Table.TransformColumnTypes(Data0,List.Zip({colNames,colTypes}))