Excel数据透视表:按日期分组后显示最大日期对应的值
解决Excel数据透视表显示分组最后日期对应Value值的问题
我来帮你搞定这个数据透视表的需求——按年/季/月分组后,要显示每组最后一天对应的Value值,而不是常规的求和、平均这些汇总结果对吧?下面给你两个实用方案,适配不同的Excel版本:
方法一:添加辅助列(通用所有Excel版本)
这个方法不用依赖任何高级功能,操作起来很直观:
- 在你的原始数据里新增一列,比如命名为
分组最后值,用公式判断当前日期是不是所在分组的最后一天,是的话就返回对应的Value,否则留空:- 按月分组(假设Date列在A2,Value列在B2):
这里=IF(A2=EOMONTH(A2,0),B2,"")EOMONTH(A2,0)会算出当前日期所在月份的最后一天,当当前日期等于这个值时,就返回对应的Value,其他日期留空。 - 按年分组:
=IF(A2=DATE(YEAR(A2),12,31),B2,"") - 按季度分组:
这个公式会自动算出当前日期所在季度的最后一天,比如3月31日、6月30日这类。=IF(A2=DATE(YEAR(A2),INT((MONTH(A2)+2)/3)*3,DAY(EOMONTH(A2,0))),B2,"")
- 按月分组(假设Date列在A2,Value列在B2):
- 刷新你的数据透视表,把新的
分组最后值字段拖到「值」区域,设置汇总方式为求和(因为只有最后一天有值,其他都是空,求和就等于取那个唯一的有效值)。 - 把Date字段拖到「行」区域,设置成你需要的年/季/月分组,这样每个分组就会显示对应最后一天的Value值了。
方法二:用Power Pivot+DAX公式(适合Excel 2013及以后版本)
如果你的Excel支持Power Pivot,这个方法更灵活,不用修改原始数据:
- 选中你的数据区域,点击「数据」选项卡→「从表格/范围」,勾选“我的表格有标题”,点击确定把数据导入Power Pivot。
- 在Power Pivot的「计算」选项卡中,点击「新建度量值」,输入下面的DAX公式(记得把
你的表名换成你实际的表名):
原理很简单:先拿到当前分组的最大日期,再筛选出这个日期对应的Value值(因为每个日期只有一个Value,用MAX或MIN都可以)。分组最后值 = VAR 分组最大日期 = MAX('你的表名'[Date]) RETURN CALCULATE(MAX('你的表名'[Value]), '你的表名'[Date] = 分组最大日期) - 回到Excel,插入数据透视表时选择「使用此工作簿的数据模型」作为数据源。
- 把Date字段拖到「行」区域并设置分组,把新建的「分组最后值」度量值拖到「值」区域,直接就能看到每组最后日期对应的Value了。
关于你之前的尝试
你之前把Date同时放在行和值区域取最大日期的思路是对的,只是差了最后一步把这个最大日期和对应的Value关联起来。上面的两个方案都帮你完成了这个关联,你可以根据自己的Excel版本选合适的方法。
内容的提问来源于stack exchange,提问作者Axel G.
相关产品推荐
相关产品推荐

