Excel 2013 Power Query中Web.Contents引用链接单元格的方法求助
分步指导:在Power Query中引用单元格动态链接获取CoinMarketCap加密货币历史数据
嘿,我完全懂你现在的困扰——刚接触Power Query,想把Excel里用CONCATENATE生成的动态链接(自动把当日日期设为结束日期)用到Web.Contents里,却找不到现成的步骤对吧?别慌,我带你一步步搞定这个操作,其实比你想的简单!
第一步:确认你的动态链接单元格设置正确
- 先确保你已经在Excel单元格(建议给它命名成
CoinMarketCap_EOS_URL,这样后续引用更稳定)里生成了有效的链接。比如公式可以写成:
复制这个单元格里的链接到浏览器,确认能正常打开EOS的历史数据页面,并且结束日期是当天的日期。=CONCATENATE("https://coinmarketcap.com/currencies/eos/historical-data/?start=20200101&end=",TEXT(TODAY(),"YYYYMMDD"))
第二步:在Power Query中引用这个动态链接
- 打开你的Excel文件,点击顶部菜单栏的「数据」选项卡,选择「从其他来源」→「从空查询」,打开Power Query编辑器。
- 点击编辑器顶部的「高级编辑器」,把默认的代码替换成下面的内容(根据你的实际单元格名称/位置修改):
点击「完成」后,编辑器里会显示单元格里的动态链接,这说明引用成功了。let // 引用已命名的单元格链接,如果没命名,就用Sheet名+单元格地址 DynamicURL = Excel.CurrentWorkbook(){[Name="CoinMarketCap_EOS_URL"]}[Content]{0}[Column1] // 如果没命名单元格,替换成: // DynamicURL = Excel.CurrentWorkbook(){[Name="Sheet1"]}[Range].A1 in DynamicURL
第三步:用Web.Contents加载并解析网页数据
现在我们要把这个链接传给Web.Contents,然后解析CoinMarketCap的历史数据表格:
- 再次打开「高级编辑器」,修改代码如下:
let // 获取动态链接 DynamicURL = Excel.CurrentWorkbook(){[Name="CoinMarketCap_EOS_URL"]}[Content]{0}[Column1], // 加载网页内容 WebSource = Web.Contents(DynamicURL), // 解析HTML表格——这里的选择器匹配CoinMarketCap历史数据的表格结构 ParsedTable = Html.Table(WebSource, { {"Date", "td:nth-child(1)"}, {"Open", "td:nth-child(2)"}, {"High", "td:nth-child(3)"}, {"Low", "td:nth-child(4)"}, {"Close", "td:nth-child(5)"}, {"Volume", "td:nth-child(6)"}, {"Market Cap", "td:nth-child(7)"} }), // 转换数据类型,让日期、数值更规范 SetDataTypes = Table.TransformColumnTypes(ParsedTable, { {"Date", type date}, {"Open", Currency.Type}, {"High", Currency.Type}, {"Low", Currency.Type}, {"Close", Currency.Type}, {"Volume", Currency.Type}, {"Market Cap", Currency.Type} }) in SetDataTypes - 点击「完成」后,编辑器里会显示解析好的EOS历史数据表格,检查一下日期、数值是不是都正确。
第四步:设置自动刷新,实现每日更新
- 点击Power Query编辑器顶部的「关闭并上载」,把数据加载到你的Excel工作表里。
- 回到Excel,点击「数据」选项卡,找到「全部刷新」旁边的下拉箭头,选择「连接属性」。
- 在弹出的窗口里,勾选「打开文件时刷新数据」,或者设置定时刷新(比如每天特定时间刷新),这样你的数据就能每天自动更新啦!
常见问题小提示
- 如果遇到
Web.Contents权限报错:点击Excel的「文件」→「选项和设置」→「查询选项」→「隐私」,选择「忽略隐私级别设置」(这个对你自己的文件是安全的)。 - 如果链接加载失败:先检查单元格里的链接是否有效,复制到浏览器能不能打开;另外CoinMarketCap偶尔会有反爬限制,频繁刷新可能会被拦截,稍等一会儿再试就好。
这样一步步操作下来,你就能轻松实现每日自动获取EOS的历史数据了!如果中间有任何步骤卡壳,随时说具体哪里出问题~
内容的提问来源于stack exchange,提问作者Olimpiu Horj
相关产品推荐
相关产品推荐

