Excel FILTERXML解析Kraken API的BTCEUR价格报#VALUE!求助
问题原因
FILTERXML函数仅支持XML格式数据,而Kraken API返回的是JSON格式,直接用它解析必然返回#VALUE!错误,这就是你两个公式失效的核心原因。
解决方案
根据你的Excel版本,可选择以下两种方法:
方法1:兼容多数Excel版本(TEXTJOIN+FILTERXML组合)
先把JSON转换为FILTERXML可识别的XML结构,再提取目标数据:
=FILTERXML("<t><s>"&TEXTJOIN("</s><s>",TRUE,TEXTSPLIT(WEBSERVICE("https://api.kraken.com/0/public/Ticker?pair=BTCEUR"),"""",":",",","[","]"))&"</s></t>","//s[preceding::s[1]='c'][1]")
逻辑说明:
- 用
TEXTSPLIT将JSON按引号、冒号、逗号、方括号拆分,打散为单个文本片段 - 用
TEXTJOIN把片段包裹成XML标签结构,让FILTERXML能识别 - 通过XPath定位到
c标识后的第一个值,即实时成交价
方法2:仅适用于Excel 365/2021及以上(原生JSON解析)
利用Excel自带的JSON解析函数,写法更简洁可靠:
=LET( jsonData, WEBSERVICE("https://api.kraken.com/0/public/Ticker?pair=BTCEUR"), parsedData, JSON(jsonData), INDEX(parsedData.result.BTCEUR.c,1) )
逻辑说明:
LET定义变量,简化公式结构JSON函数直接将返回的JSON字符串解析为可访问的对象INDEX提取BTCEUR下c数组的第一个元素
内容的提问来源于stack exchange,提问作者Minoska
相关产品推荐
相关产品推荐

