我一直在 Excel 中制作模拟股票投资组合,并且一直在寻找自动更新数据的方法,例如股票价格和市盈率。
我曾尝试使用 Web 查询 MSN Money,但这只会在多个单元格中显示整个股票报价,我希望仅在单个单元格中更新数据。我能想到的唯一 Web 查询解决方案是,如果有人托管一个网站,其中股票报价中的每个值都保存在不同的 HTML 文件中。然后我可以对需要该值的每个单元格使用 WebQuery 查询该文件。但是,没有网站提供此功能。
那么从本质上讲,Excel 2011 Mac 上是否有任何工具可以让我从股票报价中提取单个值并将它们分配给单个单元格?
答案1
对于 Mac 上的 Office 2011,在 /Applications/Microsoft Office 2011/Office/Queries 目录中创建一个文件(例如,GoogleQuote),其中包含以下内容:
WEB
1
http://download.finance.yahoo.com/d/quotes.csv?s=goog&f=l1
然后,与上面的说明类似:
- 转到要插入引号值的单元格
- 菜单栏“数据”>“获取外部数据”>“运行已保存的查询”
- 选择上面创建的文件(例如“GoogleQuote”)
您可以检查弹出窗口的“属性”部分,以查看其他选项(例如,打开电子表格后立即刷新)。然后选择“确定”。
您应该会看到一条弹出消息,向您提供状态,然后就会出现报价。
答案2
由于您使用的是 Mac,因此有一些命令行工具可以使这一过程变得简单。
curl
是一个命令行工具,可让您从命令行检索网页。在 Mac 终端中,输入“curlhttp://www.yahoo.com“它将返回雅虎主页的 HTML。
Yahoo 可以通过 HTTP 检索单个股票报价。使用下面的 curl 示例,我们可以从 Yahoo Finance 检索单个股票价格。在本例中,我们检索的是 Google 的股票价格,其代码为“goog”。
curl -s "http://download.finance.yahoo.com/d/quotes.csv?s=goog&f=l1"
Yahoo 可让我们轻松地一次检索多个引文。在下面的示例中,我们检索了 Google、Yahoo 和 General Mills 的引文,其符号分别为“goog”、“yhoo”和“gis”。我们只需用逗号将它们分开即可。
curl -s "http://download.finance.yahoo.com/d/quotes.csv?s=goog,yhoo,gis&f=l1"
现在我们可以检索多个股票报价,我们需要将它们导入 Excel。我发现最简单的方法是将 curl 脚本的结果保存在文本文件中,然后将该文件导入 Excel。
为了使 curl 将结果保存到文件,我们使用“-o”选项,如下例所示。
curl -o quotes.txt -s "http://download.finance.yahoo.com/d/quotes.csv?s=goog,yhoo,gis&f=l1"
这会在本地目录中创建一个名为“quotes.txt”的文件,然后您可以将其导入 Excel。
注意:您也可以直接点击链接,Safari 将下载一份包含价格的名为 quotes.csv 的文件。
希望这可以帮助!
添加如何导入Excel:
获得股票价格文件后,您可以轻松地将其导入 Excel。
在菜单栏上,选择“数据”->“获取外部数据”->“导入文本文件”
选择包含股票价格的文本文件
在下一个屏幕上,您有多个选项,但只需单击“完成”
您必须选择要放置数据的单元格,然后它就会出现!
答案3
如果您不需要与 Yahoo 的向后兼容性,而只是想要一个简单的价格报价,此 VBA 代码片段会添加一个 Excel 函数来返回股票代码的价格。
这不是完美的代码,但可以作为如何使用强大的 IEX API 的简单示例。(其他常用属性也可用。)
使用 VBA 编辑器将其放入模块中:
Public Function tickerPrice(ticker As String)
Dim htmlCmd As String
Dim curlCmd As String
Dim shellCmd As String
Dim sResult As String
htmlCmd = "https://api.iextrading.com/1.0/stock/" & ticker & "/quote/delayedPrice"
curlCmd = "curl \""" & htmlCmd & "\"""
shellCmd = "do shell script "" " & curlCmd & " "" "
sResult = MacScript(shellCmd)
tickerPrice = Val(sResult)
End Function
打开工作簿时请确保启用宏。
这是在 2017 年末使用 High Sierra 中的 Mac Excel 2011 进行的测试。