Apple Numbers中按股票代码求和持仓数量的实现方法咨询
操作名称与实现方案:投资持仓表的条件求和
操作名称
这个操作叫做条件求和,对应电子表格(Excel/Google Sheets)中的SUMIF或SUMIFS函数,和你提到的PHP逻辑完全匹配:先从数据集(买入历史表)中筛选出符合指定条件(股票代码匹配)的条目,再对目标字段(how many列)求和,等价于PHP里array_filter+array_sum的组合用法。
实现方案(以Excel/Google Sheets为例)
假设你的表格结构如下:
- 买入历史表(命名为
买入历史):A列=股票代码(如AAPL),B列=how many(买入数量) - 持仓表:A列=待统计的股票代码,B列=自动计算的持仓总量
1. 单条件求和(仅匹配股票代码)
在持仓表B2单元格(对应A2的股票代码)输入公式:
=SUMIF(买入历史!A:A, A2, 买入历史!B:B)
公式说明:
买入历史!A:A:指定要匹配的条件列(股票代码列)A2:当前行的目标股票代码(条件值)买入历史!B:B:指定要求和的数值列(how many列)
下拉填充公式后,每一行都会自动计算对应股票的总持仓量。
2. 多条件求和(比如排除卖出记录)
如果买入历史表新增了“交易类型”列(C列,值为「买入」/「卖出」),需要仅统计买入的数量,用SUMIFS实现多条件筛选求和:
=SUMIFS(买入历史!B:B, 买入历史!A:A, A2, 买入历史!C:C, "买入")
对应PHP逻辑类比
用PHP代码模拟这个逻辑的话,伪代码如下:
// 模拟买入历史数据 $buyHistory = [ ['code' => 'AAPL', 'how_many' => 10], ['code' => 'GOOG', 'how_many' => 5], ['code' => 'AAPL', 'how_many' => 20], ]; // 筛选AAPL的记录并求和 $aaplTotal = array_sum( array_column( array_filter($buyHistory, fn($item) => $item['code'] === 'AAPL'), 'how_many' ) ); echo $aaplTotal; // 输出30
这段代码的逻辑和SUMIF函数完全一致:先过滤出股票代码为AAPL的条目,再提取how_many字段求和。
内容的提问来源于stack exchange,提问作者krimkromson
相关产品推荐
相关产品推荐

