PowerPivot中按条件查找后续年份站点值并合并的公式求助
解决PowerPivot中生成[Destination]列的问题
我来帮你搞定这个需求!要实现每行对应唯一[ID]且[Joined]标记为"JOINED"的下一个[Year]的所有[Site]值合并,咱们可以用DAX计算列分两步来做,逻辑清晰还容易调试:
第一步:计算每行对应的「下一个目标年份」
先创建一个计算列NextJoinedYear,用来定位当前行ID对应的、标记为JOINED的所有年份里,比当前年份大的最小那个年份(也就是你要的「下一个Year」):
NextJoinedYear = VAR CurrentID = [ID] VAR CurrentYear = [Year] -- 筛选出当前ID下,JOINED标记的、年份大于当前行的所有年份 VAR JoinedYears = CALCULATETABLE(VALUES('Table'[Year]), 'Table'[ID] = CurrentID, 'Table'[Joined] = "JOINED", 'Table'[Year] > CurrentYear) RETURN -- 如果有符合条件的年份,取最小的那个;没有则返回空 IF(NOT ISEMPTY(JoinedYears), MINX(JoinedYears, [Year]), BLANK())
注意:把公式里的'Table'替换成你实际的表名
第二步:生成[Destination]列合并对应Site值
接着创建最终的Destination计算列,用CONCATENATEX把第一步找到的目标年份下的所有Site值合并成字符串:
Destination = VAR CurrentID = [ID] VAR TargetYear = [NextJoinedYear] RETURN IF(NOT ISBLANK(TargetYear), -- 筛选出当前ID、JOINED标记、目标年份的所有Site,用逗号分隔合并 CONCATENATEX( FILTER('Table', 'Table'[ID] = CurrentID && 'Table'[Joined] = "JOINED" && 'Table'[Year] = TargetYear), 'Table'[Site], ", " ), -- 如果没有目标年份,返回空值 BLANK() )
一些额外说明:
- 如果你的表名不是
'Table',一定要替换成实际表名,不然公式会报错 - 这个逻辑会自动处理「下一年有多个Site」的情况,把所有Site用逗号分隔拼接
- 如果当前行ID没有对应的下一个JOINED年份,
Destination会显示为空,符合实际需求
内容的提问来源于stack exchange,提问作者Gabriel H
相关产品推荐
相关产品推荐

