怎样用 Excel 制造漂亮的动静日历

学习推荐

原文题目:《此么牛 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

标签: 漂亮动态日历