我有一个可以从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%的自信。
发布于 2022-11-11 12:24:46
你可以操纵Queries.Formula。我也做了同样的练习,通过将“Order”传递给我的子程序来操作每个查询,以操作每个公式。函数返回新的公式,然后调用子调用来刷新该查询。您需要对此代码进行一些更改:
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 Functionhttps://stackoverflow.com/questions/74363948
复制相似问题