如何在Google Sheets中用ArrayFormula实现每行库存余额计算
在Google Sheets中用ARRAYFORMULA计算每行库存余额
假设你的表格包含以下列:
- 商品:记录商品名称(如a、b)
- 操作:记录买卖类型(如「买入」「卖出」)
- 数量:记录操作对应的数量
- 余额:需要自动计算的实时库存余额列
核心公式
在余额列的第一个数据单元格(比如D2)输入以下公式:
=ARRAYFORMULA(IF(A2:A="",,MMULT(--(ROW(A2:A)>=TRANSPOSE(ROW(A2:A)))*(A2:A=TRANSPOSE(A2:A)),IF(B2:B="买入",C2:C,-C2:C))))
公式逻辑说明
IF(A2:A="",, ...):跳过空白行,避免无效计算--(ROW(A2:A)>=TRANSPOSE(ROW(A2:A))):生成矩阵标记当前行及之前的所有行,用于累加历史数据*(A2:A=TRANSPOSE(A2:A)):筛选出与当前行商品相同的历史记录IF(B2:B="买入",C2:C,-C2:C):将买入数量设为正,卖出数量设为负MMULT(...):通过矩阵乘法,对符合条件的数量进行累加,得到每行的实时库存余额
示例效果
| 商品 | 操作 | 数量 | 余额 |
|---|---|---|---|
| a | 买入 | 10 | 10 |
| a | 卖出 | 3 | 7 |
| b | 买入 | 5 | 5 |
| a | 买入 | 4 | 11 |
| b | 卖出 | 2 | 3 |
内容的提问来源于stack exchange,提问作者Max Makhrov
相关产品推荐
相关产品推荐

