Excel分析卡?DAX数据分析降维打击
一句话核心价值点:
用Excel365自带的PowerQuery(M语言)与PowerPivot(DAX公式),把日常表格里绕来绕去的重复活,变成几行代码一次搞定,让2026年的你上班像开了外挂,轻巧绕开繁琐,把时间留给真正重要的事。
目录
合并百表还靠复制?一行收工
办公室常遇到按月存的销售表,几十个文件拼一起眼睛都花。
以前:打开→复制→粘贴→检查错位,做完像搬砖。
现在用PowerQuery的M,一次性吞掉文件夹里所有表。
M代码示例
let
源 = Folder.Files("C:\2026销售数据\"),
筛选Excel = Table.SelectRows(源, each [Extension] = ".xlsx"),
读取内容 = Table.AddColumn(筛选Excel, "数据", each Excel.Workbook(File.Contents([Folder Path] & [Name]))),
展开表格 = Table.ExpandTableColumn(读取内容, "数据", {"Name", "Data"}, {"文件名", "表数据"}),
提数据列 = Table.SelectColumns(展开表格,{"表数据"}),
合并 = Table.Combine(提数据列[表数据])
in
合并
先抓文件夹里所有文件,筛出.xlsx避免混入杂项
用Excel.Workbook把每个文件读成可拆的结构
Table.ExpandTableColumn把表里数据摊开成行
只留含数据的列,最后Table.Combine一把拼完
运行一次,2026年全年的月度表瞬间合成一张
原理就是让电脑按顺序读文件→拆内容→摞一起,省掉手拖手贴。
日期维度不会拆?自动变梯队
做报表时领导要看“本周”“本月”“本季”,手工改区间累死人。
Power Query能按当前日期自动切出常用时间段。
M代码示例
let
源 = Table.FromRows({}, {"日期", "所属周期"}),
基准日 = DateTime.LocalNow(),
加周 = Table.AddColumn(源, "周区间", each Text.From(Date.StartOfWeek(基准日, Day.Monday)) & " ~ " & Text.From(Date.EndOfWeek(基准日, Day.Monday))),
加月 = Table.AddColumn(加周, "月区间", each Text.From(Date.StartOfMonth(基准日)) & " ~ " & Text.From(Date.EndOfMonth(基准日))),
加季 = Table.AddColumn(加月, "季区间", each Text.From(Date.StartOfQuarter(基准日)) & " ~ " & Text.From(Date.EndOfQuarter(基准日)))
in
加季
DateTime.LocalNow()抓2026年当下的系统时间
Date.StartOfWeek/EndOfWeek按周一为起点切一周
StartOfMonth/EndOfMonth圈出当月首尾
StartOfQuarter/EndOfQuarter定季度范围
结果直接生成文本区间,套进透视表就能分组看数
这样每天打开报表,周期标签自动对上今天,不怕领导临时换口径。
动态分组统计?不用手动切
比如销售额按区间显示“低/中/高”,每次改阈值就要重分类。
DAX能随数据变化自动落组。
DAX公式示例
动态组 =
SWITCH(
TRUE(),
[销售额] <= 5000, "低",
[销售额] <= 15000, "中",
"高"
)
SWITCH(TRUE(), …)让条件按顺序判断,命中即停
第一档≤5000标“低”,第二档≤15000标“中”,其余“高”
数据里2026年某天销售额变了,组别即时重算
不用回透视表手动拖区间,模型里一次定义长久有效
把公式放计算列或度量值,图表随拖随出新分组
原理是用逻辑判断替你盯数字,省去反复调组的麻烦。
同比环比算到眼晕?公式代劳
月度业绩对比,手工算去年同月、上月差额太磨人。
DAX把这类跨期比较封装成现成算法。
DAX公式示例
上月销售 =
CALCULATE(
SUM('销售'[金额]),
PREVIOUSMONTH('日期'[日期])
)
同比销售 =
CALCULATE(
SUM('销售'[金额]),
SAMEPERIODLASTYEAR('日期'[日期])
)
环比增幅 =
DIVIDE(
[本月销售] - [上月销售],
[上月销售],
0
)
PREVIOUSMONTH跳到上个月同一日期表范围
SAMEPERIODLASTYEAR直接对准去年同月
DIVIDE防除零报错,第三个参数给默认值0
用这三段,2026年任意月份都能秒出环比同比
数据刷新即更新,不怕临时被问“上个月比呢?”
底层是时间智能函数帮你锁定对应周期,账算得又快又稳。
缺失值乱阵脚?智能补位出场
导入数据时偶尔缺日期或品类,汇总就漏块。
M可在加载前把洞补上合理值。
M代码示例
let
源 = Table.FromRows({{null, "A", 100}, {"2026-01-02", null, 200}}, {"日期", "品类", "销量"}),
填日期 = Table.FillDown(源,{"日期"}),
填品类 = Table.FillAcrossRows(填日期,{"品类"})
in
填品类
Table.FillDown把上方非空值往下灌,补连续日期
Table.FillAcrossRows横向把同列空值用同行已有值填
原本缺的2026-01-01日期和缺失品类被合理复原
保证后续透视表不因空值断片
适合日志类或分段采集的表,让数据形态完整可算
这招让凌乱原始表在进模型前先自修,减少人工猜填。
跨表关联查数?一秒定位答案
比如订单表找客户所在城市,不用VLOOKUP来回翻。
在PowerPivot建关系,DAX直接跨表取数。
DAX公式示例
城市 =
RELATED('客户'[城市])
城市订单总额 =
SUMX(
'订单',
RELATED('客户'[城市]) & " : " & '订单'[金额]
)
RELATED沿已建关系抓取另一表字段,这里取城市名
SUMX遍历订单行,把城市与金额拼成可读串
前提是模型里“订单”与“客户”用客户ID建立一对多关系
2026年新单导入,城市自动匹配无需再查通讯录
查询就像问“这张单的客户住哪”,模型直接答
原理是用关系网替你跑腿找数,跨表不再来回切表。
金句小结
- • 会写几行M或DAX,表格就从体力活变脑力游戏。
更多干货点我头像进主页,每天更新