如何在PowerBI中统计两指定文本行之间的列行数?
在PowerBI Desktop中统计两个固定文本行之间的行数
方法一:使用DAX(适用于单组起始/结束文本)
添加索引列锁定行顺序
PowerBI表格默认不保证行顺序,先在Power Query编辑器中给目标表格添加索引列:- 打开Power Query编辑器,选中目标表格
- 点击「添加列」>「索引列」>「从1开始」
- 关闭并应用更改
创建计算列获取起始/结束位置
假设表格名为文本表,目标字符串列名为内容列,起始文本为"开始标记",结束文本为"结束标记",添加两个计算列:起始索引 = CALCULATE(MIN('文本表'[Index]), FILTER('文本表', '文本表'[内容列] = "开始标记")) 结束索引 = CALCULATE(MIN('文本表'[Index]), FILTER('文本表', '文本表'[内容列] = "结束标记"))若需要取最后出现的起始/结束文本,将
MIN替换为MAX即可。编写度量值统计行数
创建度量值计算两行之间的行数(不含起始和结束行本身,若需要包含则去掉-1):中间行数 = VAR StartIdx = MAX('文本表'[起始索引]) VAR EndIdx = MAX('文本表'[结束索引]) RETURN IF(EndIdx > StartIdx, EndIdx - StartIdx - 1, 0)
方法二:Power Query处理多组起始/结束文本
如果表格中存在多组起始-结束文本对,用Power Query分组统计更高效:
添加索引与标记列
在Power Query中添加索引列后,添加两个自定义列标记起始和结束行:IsStart = [内容列] = "开始标记" IsEnd = [内容列] = "结束标记"生成分组ID
添加自定义列,通过累加给每组起始-结束对分配唯一ID:GroupID = List.Accumulate({0..Table.RowCount(#"添加的自定义列")-1}, 0, (state, current) => state + if #"添加的自定义列"{current}[IsStart] then 1 else 0)分组统计行数
- 点击「转换」>「分组依据」,选择
GroupID作为分组列 - 新增聚合列,操作选择「行计数」,命名为
中间行数 - 最后可根据需求调整,减去起始和结束行的数量(每组减2)
- 点击「转换」>「分组依据」,选择
注意事项
- 确保起始和结束文本在表格中存在,否则度量值会返回0;可添加
ISBLANK判断处理空值情况 - 若起始索引大于等于结束索引,返回0避免负数结果
内容的提问来源于stack exchange,提问作者newBeeCoder
相关产品推荐
相关产品推荐

