原文题目:《此么牛 X 的美丽动静日历,是怎么用 Excel 做出来的?(不是透视表)》
各位好,我是在研讨日历做法的小爽~
人不知鬼不觉,2023 年已经过去几个月啦~
之前咱们详细介绍过,应用数据透视表制造日历。
也详细介绍过应用函数制造日历。
不外,有个小伙伴问,能不能用 PQ 制造日历?
我突然想到 PQ 法做日历,似乎没给各位详细介绍过。
PowerQuery (PQ) 内里也有很多日期类函数,也能够制造日历。(只不外难度会比数据透视表大一点点,而且还会波及几个 M 函数。)
既然小伙伴们想学,那今日小爽将会带各位一步步编写 M 函数公式,来制造此个日历。
1、结构数据
在制造之前,咱们先结构一个查问表,月的单元格,能够事前应用数据考证设置一个下拉列表。
详细步调:
将查问表导入到 PQ 编辑器中。选中 A1:B2 单元格地区,在【数据】] 选项卡下,单击【来自表格 / 地区】,进入 PQ 编辑器中。
单击 fx 能够新增一个公式步调。(后续新增步调都是点此里哦~)
鼠标移动到需变动的步调上,按右键,单击【重定名】便可修正步调称号。(后续重定名步调都是点此里哦~)
PS:定名好步调称号有助于进步公式的可读性。
新增步调,获得查问表中年和月的第一天,步调称号定名为「月份第一天」。
=date(源[年]{0},源[月]{0},1)
小 Tips:
= date (年,月,日) 主要是用来结构一个日期。
源 [年]{0} 获得表中的年。
源 [月]{0} 获得表中的月。
新建步调,获得查问表中年代的最初一天。步调称号定名为「月份最初一天」。
=Date.EndOfMonth(月份第一天)
Date.EndOfMonth 函数能够前往日期当月的最初一天的日期。
新建步调,将第一天和最初一天日期停止扩大。步调定名为「月日期」。
=List.Transform({Number.From(月份第一天)..Number.From(月份最初一天)},Date.From)
简略解释一下:在 M 函数表达式中,列表的表现方法是用 {中括号},如下图,{1,2},就是 1,2 形成的列表。
如果要表现 1 到 9 的列表,就是 {1,2,3,4,5,6,7,8,9},可简写为 {1..9},如下图:
因为日期的实质是个数值,因此咱们能够先将日期应用 Number.From 先转为数值,然后再停止扩大。最初应用 Date.From 转为日期便可。
{Number.From(月份第一天)..Number.From(月份最初一天)}
当初,一整个月的日期咱们都做出来了。
察看日历表,能够发现,咱们还需要获得日期中的日,礼拜数,和每个月周数 的相干数据。
因此咱们底下三个步调就是为了获得此三块的内容。
新建步调,获得日期的天数。步调定名为「获得日」。
=List.Transform(月日期,Date.Day)
Date.Day 能够获得日期中的日。
新建步调,获得礼拜数。步调定名为「获得礼拜数」。
=List.Transform(月日期,Date.DayOfWeekName)
Date.DayOfWeekName 能够获得日期的礼拜数。
新建步调,获得日期对应确当前月的周数。步调定名为「周数」。
=List.Transform((月日期),Date.WeekOfMonth)
Date.WeekOfMonth 能够获得日期对应确当月的周数。
到此里,咱们已经把所需要的三个数据弄出来了。
2、转表透视
因为日历是个表,因此咱们还需要将数据停止整合兼并在一起形成一个表。
新建步调,链接成表。步调定名为「数据」。
=Table.FromColumns({周数获得礼拜数获得日})
Table.FromColumns 能够按列转换为表。
日历表是个二维数据,因此咱们还需要将礼拜数 (Column2 列) 停止透视处置。
选中 [Colum2] 列,在【转换】选项卡下,单击【透视列】,呈现透视列弹窗,值列抉择 [Column3] 列,单击【断定】按钮。
到此里,咱们发现,礼拜数并非依照咱们想要的后果停止排序的。
只需要变动第二参数,就能够转变日期的次序。
底本的公式:
=Table.Pivot数据List.Distinct数据[Column2]),"Column2","Column3",List.Sum)
修正后的公式:
=Table.Pivot(数据,{"礼拜一","礼拜二","礼拜三","礼拜四","礼拜五","礼拜六","礼拜日"},"Column2","Column3",List.Sum)
固然,如果你想要的日期是 从礼拜日起始的,也能够经由过程转变第二参数的次序来实现。
最初一步就是将咱们不需要的 Column1 列,也就是显现月周数的列,停止删除便可。
选中 Column1 列,按鼠标右键-删除。
当初,咱们的日期就制造实现啦~
最初将 PQ 做好的日历表加载到工作表中,就搞定了!
顺次点击【文件】选项卡-【封闭并上载至】,抉择「现有工作表」并指订单元格地位。
3、自动更新
因为 PQ 每一次变动查问表的年代,都需要革新一次,很麻烦。
因此,咱们能够加个工作表变乱,当 A2 和 A3 单元格产生值转变的时候,将表格全体停止更新。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 298050909@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:https://www.kufox.com//xxtj/2023-04-17/4938.html