ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7323|回复: 9

[分享] 分享使用PowerPivot中DAX语句创建数据透视表小示例

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-18 16:38 | 显示全部楼层 |阅读模式
本帖最后由 张文洲 于 2015-5-18 16:51 编辑

上月结存自动转为本月期初.rar (10.16 KB, 下载次数: 125)
财务或销售中做进销存、余额表等使我们常见的问题,我们可以用公式或者SQL语句来实现。以下是WuXiang_123版主之前的示例文件,暂且借来用一样。
具体可以点击原链接:上月结存自动转为本月期初

1.png

现在,在PowerPivot中,我们也可以使用DAX表达式来实现这一功能了。
直接把数据源导入到数据模型中,然后把出库、入库拖入值区域,月、名称拖入行区域。
然后添加两个计算字段(注意与普通数据透视表计算字段的差别)

期末=
  1. =if(HASONEVALUE('表1'[月]),CALCULATE(sum('表1'[入库]),filter(all('表1'[月]),'表1'[月]<=values('表1'[月])))-CALCULATE(sum('表1'[出库]),filter(all('表1'[月]),'表1'[月]<=values('表1'[月]))),BLANK())
复制代码


如图

3.png

再添加一个期初,实际上就是  期初 = 期末+出库-入库
期初=
  1. =[期末]+[以下项目的总和出库]-[以下项目的总和入库]
复制代码
如图

4.png

接下来把期初、期末拖入值区域就可以了,最终效果如图

2.png


DAX表达式的引入,给我们创建更加复杂、灵活的数据透视表提供了更为广阔的空间,相比普通数据透视表的计算字段或计算项,要灵活的多。
关于DAX的基础知识,参照tc0098的有关帖子


菜鸟PP周记(一)为什么PowerPivot

菜鸟PP周记(二)DAX之求增长率(Calculate,ALL,Filter)


菜鸟PowerPivot周记(三)销售每平米KPI计算(SUMX)—— 内藏挑战题目!


菜鸟PowerPivot周记(四)【完成!】Price & Quantity Effect Analysis(SUMX)





评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-5-18 22:36 | 显示全部楼层
有用,顶,!~~~

TA的精华主题

TA的得分主题

发表于 2015-5-18 22:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
必需收藏,等我安好了excel好好学习一下

TA的精华主题

TA的得分主题

发表于 2015-5-22 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
文洲老师,HASONEVALUE这个函数,帮助文件上说:
“当已将 TRUE 的上下文筛选为只剩下一个非重复值时,将返回 columnName。否则为 FALSE。”

没看明白,能详细解释一下吗?

还有 这个贴子:http://club.excelhome.net/thread-1033403-1-1.html

PY Sales:=
                                    IF(HASONEVALUE(data[year]),
                                    CALCULATE([SalesValue],ALL(data[year]),FILTER(all(data[year]),data[year]=VALUES(data[year])-1)),
                                    BLANK())

上面这句话改为下面,为什么返回空:

CALCULATE([SalesValue],ALL(data[year]),FILTER(all(data[year]),data[year]=VALUES(data[year])-1))

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-22 09:55 | 显示全部楼层
hope9966 发表于 2015-5-22 09:32
文洲老师,HASONEVALUE这个函数,帮助文件上说:
“当已将 TRUE 的上下文筛选为只剩下一个非重复值时,将 ...

HASONEVALUE函数一般用于判断是否位于分类汇总的汇总行或者合计行,这些位置对应的某个行标签已经不是某个具体的项目,而是多个项目。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-5-22 13:50 | 显示全部楼层
张文洲 发表于 2015-5-22 09:55
HASONEVALUE函数一般用于判断是否位于分类汇总的汇总行或者合计行,这些位置对应的某个行标签已经不是某 ...

感谢老师讲解,很受益!~~

感谢感谢!~~

TA的精华主题

TA的得分主题

发表于 2015-6-5 17:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-10-6 02:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果用函数算,其实期初就是=SUM($C$1:C1)-SUM($D$1:D1),期末就是=SUM($C$2:C2)-SUM($D$2:D2)

TA的精华主题

TA的得分主题

发表于 2020-8-24 09:14 | 显示全部楼层
[以下项目的总和出库]-[以下项目的总和入库]   这两个名称是如何设置的?

TA的精华主题

TA的得分主题

发表于 2020-8-24 09:39 | 显示全部楼层
=[期末]+[以下项目的总和出库]-[以下项目的总和入库]  原始的数据表里没有 [以下项目的总和出库]  [以下项目的总和入库] 这两列
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 17:18 , Processed in 0.064710 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表