如何在不删除行的情况下按最新修订版统计合同状态与类型?
合同最新修订版状态统计解决方案
方法一:辅助列+修正后的数据透视表
这是最适配你现有操作习惯的方案,不用删行,仅通过辅助标记就能修正透视表的错误:
- 假设数据列对应关系:A=合同编号(contract)、B=合同类型(Type)、C=修订版号(amendment)、D=状态(stats)
- 在空白列(比如E列)输入数组公式:
=C2=MAX(IF($A$2:$A$100=A2,$C$2:$C$100)),输入完成后按Ctrl+Shift+Enter(Excel 365/2021版本直接回车即可)。该公式会自动判断当前行是否为对应合同的最新修订版,是则返回TRUE,否则返回FALSE - 插入数据透视表,行字段选择「Type」和「stats」,值字段选择「contract」并设置为计数(不同)
- 给透视表添加筛选器,选择辅助列的
TRUE选项,此时透视表只会统计每个合同的最新状态,不会出现重复计数问题
方法二:动态数组公式直接统计(适用于Excel 365/2021)
如果你的Excel支持动态数组功能,无需辅助列也能直接生成统计结果:
- 提取所有唯一合同:
=UNIQUE(A2:A100) - 匹配每个合同的最新状态:
=XLOOKUP(MAX(FILTER(C:C,A:A=F2)),C:C,D:D,"",0,1)(F2为上一步提取的唯一合同单元格) - 匹配对应合同类型:
=XLOOKUP(F2,A:A,B:B) - 用
COUNTIFS按类型和状态统计,例如统计「Type=服务合同」且「stats=revoked」的合同数量:=COUNTIFS(H:H,"服务合同",G:G,"revoked") - 更高效的方式是用
PIVOTBY直接生成统计透视表:=PIVOTBY(H:H,G:H,F:F,"COUNTA",,TRUE),一键完成按Type和stats分类的唯一合同计数
原透视表出错原因
你之前的透视表未做「仅保留最新修订版」的筛选,导致同一个合同的所有修订版都被纳入统计,最终出现单个合同被多次统计到不同状态的异常情况。
内容的提问来源于stack exchange,提问作者Blastoise Opressor
相关产品推荐
相关产品推荐

