如何在Google Sheets中聚合多笔交易,展示单行完整交易记录
Google Sheets 股票交易数据聚合方案
需求说明
我在Google Sheets中有一张记录单笔股票交易的表格,结构如下:
需要将数据聚合为每行代表一笔完整交易的格式(由多笔入场/离场交易合并而成),示例如下:
每笔完整交易需计算:
- 平均入场时间
- 平均离场时间
- 总交易数量
- 平均入场价格
- 平均离场价格
现有方案问题
之前使用@player0的解决方案效果较好,但存在两个问题:
- 错误将两笔WMT独立交易合并为一笔
- 未展示实际交易规模
解决公式
将以下公式粘贴到空白单元格(比如G2),假设原始数据在A:F列:
=LET( data, A2:F, tickers, INDEX(data,,3), types, INDEX(data,,4), batch_ids, SCAN(0, SEQUENCE(ROWS(data)), LAMBDA(a,i, IF(i=1, 1, IF(tickers[i]<>tickers[i-1], 1, IF(types[i]="入场", a+1, a) ) ) )), combined, HSTACK(data, batch_ids), unique_batches, UNIQUE(INDEX(combined,,7)), BYROW(unique_batches, LAMBDA(b, LET( batch_data, FILTER(combined, INDEX(combined,,7)=b), ticker, INDEX(batch_data,1,3), entry_data, FILTER(batch_data, INDEX(batch_data,,4)="入场"), exit_data, FILTER(batch_data, INDEX(batch_data,,4)="离场"), avg_entry_time, AVERAGE(INDEX(entry_data,,2)), avg_exit_time, AVERAGE(INDEX(exit_data,,2)), total_qty, SUM(INDEX(entry_data,,5)), avg_entry_price, AVERAGE(INDEX(entry_data,,6)), avg_exit_price, AVERAGE(INDEX(exit_data,,6)), HSTACK(ticker, "完整交易", avg_entry_time, avg_exit_time, total_qty, avg_entry_price, avg_exit_price) )) )
公式说明
- 批次ID分配:通过
SCAN函数为同一股票的每组入场+离场交易分配唯一批次ID,确保不同的同股票交易被独立区分 - 分组计算:按批次ID筛选数据,分别计算入场和离场的平均时间、平均价格,以及总交易数量
- 结果整合:将各指标整合为符合要求的汇总行,输出完整交易信息
内容的提问来源于stack exchange,提问作者Aaryyan
相关产品推荐
相关产品推荐

