STOCKHISTORY()函数与动态数组使用问题求助
解决STOCKHISTORY()处理多股票动态数组的问题
问题概述
- 单只股票代码使用
STOCKHISTORY()可正常获取收盘价 - 应用于动态增长的股票代码表格时,函数仅返回第一行股票的历史价格
- 需求:用单个动态数组公式获取表格内所有股票代码的完整历史价格
备注:西班牙地区设置,日期格式为dd/mm/yyyy,水平数组分隔符为;
解决方案
这并非STOCKHISTORY()的bug,而是该函数默认不支持直接对多单元格数组批量输出。可以通过迭代类函数实现批量处理,以下是两种可行方案:
方案1:仅获取所有股票的收盘价数据
假设股票代码位于A2:A列的动态区域(自动扩展非空行),使用BYROW迭代每个代码,再用VSTACK合并结果:
=VSTACK(BYROW(A2:INDEX(A:A;COUNTA(A:A));LAMBDA(code;STOCKHISTORY(code;TODAY()-365;TODAY();0;0;2))))
参数说明:
A2:INDEX(A:A;COUNTA(A:A)):动态定位所有非空的股票代码行STOCKHISTORY(code;TODAY()-365;TODAY();0;0;2):获取该股票过去1年的收盘价(最后一个参数2指定返回收盘价)
方案2:带股票代码标识的完整历史数据
如果需要在结果中保留对应股票代码,可在每个股票的历史数据前添加代码列:
=VSTACK({"股票代码";"日期";"收盘价"};BYROW(A2:INDEX(A:A;COUNTA(A:A));LAMBDA(code;HSTACK(REPT(code;ROWS(STOCKHISTORY(code;TODAY()-365;TODAY())));STOCKHISTORY(code;TODAY()-365;TODAY();0;0;1;2)))))
参数说明:
REPT(code;ROWS(...)):生成与该股票历史数据行数一致的代码列,实现每行数据关联对应股票HSTACK:将代码列与日期、收盘价列水平合并- 开头的
VSTACK添加表头,让数据结构更清晰
内容的提问来源于stack exchange,提问作者vsoler
相关产品推荐
相关产品推荐

