如何在Power BI中用DAX实现Excel的COUNTIF累计计数功能?
在Power BI中用DAX实现Excel的COUNTIF($B$2:B2,B2)累计计数效果
要实现Excel里拖动=COUNTIF($B$2:B2,B2)得到的逐行累计ID出现次数效果,在Power BI里可以通过「计算列+DAX」完成,步骤如下:
1. 先给表添加排序依据(关键)
Power BI的表没有固定行顺序,必须先指定一个排序字段来模拟Excel的行顺序:
- 打开Power Query编辑器,选中目标表
- 点击「添加列」→「索引列」→「从1开始」,生成一个递增的
Index列 - 如果你的表本身有天然排序字段(比如处理日期、时间戳),可以跳过这一步,直接用该字段代替
Index
2. 创建计算列
在数据视图中选中目标表,点击「建模」→「新建列」,粘贴以下DAX公式(替换成你的实际表名和字段名):
Id_Treatment_Count = VAR CurrentID = '你的数据表'[ID] VAR CurrentRowIndex = '你的数据表'[Index] RETURN CALCULATE( COUNTROWS('你的数据表'), '你的数据表'[ID] = CurrentID, '你的数据表'[Index] <= CurrentRowIndex )
公式说明
VAR CurrentID:捕获当前行的ID值VAR CurrentRowIndex:捕获当前行的索引(或排序字段值)CALCULATE:筛选出和当前行ID相同且索引小于等于当前行的所有记录,统计行数就是该ID到当前行的累计出现次数,和Excel的公式效果完全匹配
替代方案(用天然排序字段)
如果你的表有日期/时间这类天然排序字段,比如处理日期,可以直接用它代替索引:
Id_Treatment_Count = VAR CurrentID = '你的数据表'[ID] VAR CurrentTreatmentDate = '你的数据表'[处理日期] RETURN CALCULATE( COUNTROWS('你的数据表'), '你的数据表'[ID] = CurrentID, '你的数据表'[处理日期] <= CurrentTreatmentDate )
内容的提问来源于stack exchange,提问作者Abhik Nag
相关产品推荐
相关产品推荐

