首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API列表的Excel Power查询循环(coingecko.com)

API列表的Excel Power查询循环(coingecko.com)
EN

Stack Overflow用户
提问于 2022-11-08 16:19:17
回答 1查看 40关注 0票数 -1

我有一个可以从Coingecko.com获得的sheet1硬币id列表,并希望在第2页中输出api地址(https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=eur&from=1392577232&to=1422577232)。

但是,由于我在sheet1中有很多硬币id,而且列表会随着时间的推移而改变,我希望在权力查询设置中有一个循环来自动输出sheet2中的硬币价格。

到目前为止,我还需要通过更改api地址中的/位币/术语来配置每个api地址,然后再对每个硬币进行power查询中的设置。

有人知道怎么做吗?

我试图自己操作代码,但是由于我不太熟悉Power,所以总是会出现错误。我还尝试将sheet1创建为power查询中的列表,但也没有100%的自信。

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 12:24:46

你可以操纵Queries.Formula。我也做了同样的练习,通过将“Order”传递给我的子程序来操作每个查询,以操作每个公式。函数返回新的公式,然后调用子调用来刷新该查询。您需要对此代码进行一些更改:

代码语言:javascript
复制
Sub EditAllWorkbookFormuals(Order As String)
For Each q In ThisWorkbook.Queries
 q.Formula = NewQuery(q.Formula, Order)
 'q.Refresh
 ThisWorkbook.Connections("Query - " & q.Name).Refresh
Next
End Sub

Function NewQuery(MyQuery As String, Order As String) As String
' This function replace a string parts of my web query API that return info of JSON order report.
' MsgBox MyQuery
' Use Select case, If, Inst, replace, and so on.
' .....
Pos1 = InStr(1, MyQuery, "GetOrderReport?order=") ' Find Start position to be replaced
If Pos1 > 0 Then Pos2 = InStr(Pos1, MyQuery, ")") ' Finds then End posistion to be replaced
If Pos1 > 0 Then
    
    ToBeReplaced = Mid(MyQuery, Pos1, Pos2 - Pos1 + 1)
    'MsgBox ToBeReplaced
    
    NewFilter = "GetOrderReport?order=" & Order & """)"
    'MsgBox NewFilter
    
    ' Replace the filter
    MyQuery = Replace(MyQuery, ToBeReplaced, NewFilter)
End If
' Parse the new string back to Sub as the NewQuery string to Formula
NewQuery = MyQuery
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74363948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档