Excel按账号统计连续盈利最大次数及对应盈利总和问题
问题:按账号统计最大连续盈利次数及对应盈利总和
我尝试数日仍未解决以下需求:需设置公式按账号统计其连续盈利的最大次数(记录按时间顺序从上到下),同时统计该最长连续盈利区间的盈利总和。当前使用的公式存在问题:盈利为正时可递增计数,亏损时设为0,但同一账号下一次盈利时计数未重置,而是从之前的计数继续累加,仅在亏损时添加0,未实现计数重置。
数据样例
| Account No | Helper | Profit |
|---|---|---|
| 2101822 | TRUE | -11.4 |
| 2101822 | TRUE | 1.58 |
| 656546 | TRUE | 100 |
| 656546 | TRUE | 100 |
| 2101822 | TRUE | 100 |
| 2101822 | TRUE | 1001 |
| 2101822 | TRUE | -100 |
| 2101822 | TRUE | 1000 |
| 656546 | TRUE | -1.6 |
| 656546 | TRUE | 100 |
| 656546 | TRUE | 150 |
预期结果
| Account Number | 最大连续盈利次数 | 连续盈利总金额 $ |
|---|---|---|
| 2101822 | 3 | 1102.58 |
| 656546 | 2 | 150 |
解决方案
核心问题分析
原公式未针对同一账号的上一条交易记录做判断,而是直接基于上一行(可能是其他账号)的计数累加,导致账号切换后计数未正确重置。以下是修正后的分步方案:
步骤1:添加辅助列统计连续盈利次数(D列)
在D2单元格输入公式(Excel 365及以后版本直接回车;旧版本按Ctrl+Shift+Enter作为数组公式):
=IF(C2<=0,0,IF(COUNTIF($A$1:A2,A2)=1,1,IF(INDEX($C$1:C1,MAX(IF($A$1:A1=A2,ROW($A$1:A1),0)))>0,INDEX($D$1:D1,MAX(IF($A$1:A1=A2,ROW($A$1:A1),0)))+1,1)))
公式逻辑:
- 若当前交易亏损,计数设为0
- 若为该账号第一条盈利记录,计数从1开始
- 找到上一条同账号交易:若上一条盈利则计数+1,若上一条亏损则重置为1
步骤2:添加辅助列统计当前连续盈利总和(E列)
在E2单元格输入:
=IF(C2<=0,0,IF(COUNTIF($A$1:A2,A2)=1,C2,IF(INDEX($C$1:C1,MAX(IF($A$1:A1=A2,ROW($A$1:A1),0)))>0,INDEX($E$1:E1,MAX(IF($A$1:A1=A2,ROW($A$1:A1),0)))+C2,C2)))
公式逻辑:
- 亏损时总和为0
- 第一条盈利记录总和=当前盈利
- 上一条同账号交易盈利时,总和累加当前盈利;上一条亏损时,总和重置为当前盈利
步骤3:统计最大连续盈利次数(结果表B2)
假设结果表的账号在A2单元格,输入数组公式:
=MAX(IF($A$2:$A$12=A2,$D$2:$D$12,0))
按对应快捷键完成输入。
步骤4:统计最长连续盈利区间总和(结果表C2)
输入数组公式:
=MAX(IF($A$2:$A$12=A2,IF($D$2:$D$12=B2,$E$2:$E$12,0),0))
按对应快捷键完成输入。
内容的提问来源于stack exchange,提问作者Rich Townsend
相关产品推荐
相关产品推荐

