这是你没见过的日程表控制普通单元格

文摘   教育   2024-09-04 19:50   广东  
众所周知,在Excel中,日程表只能用来切片数据透视表中的日期。那么我们能不能用它来操作普通单元格呢?我们先来看看以下效果

注意看C10、C11单元格,他们并不是数据透视表,当我们选择日程表时,C10单元格能显示我们选择的初始日期,C11单元格能够显示我们选中的结束日期。这表明我们能够使用这个日程表来操控普通单元格。既然能够获取到选中的日期值,那么像以往我们做模板时用到的调节日期用的数值调节钮就可以淘汰了。因为这个不仅好用,而且比较好美化。
学会了这个功能,我们就可以用它来实现控制关于日期的动态图表,动态区域。今天,我们就来学学这个日程表控制普通单元格怎么做吧。
1.数据制作
做三个数据,一个字段名称,一个你想要的日程表的开始年份的1月1日日期,一个你想要的结束年份的倒数第二天日期。
比如这里我想要2023年-2025年,则B2单元格填入2023/1/1,B3单元格填入2025/12/30.为什么是倒数第二天?因为如果是2025/12/31的话,它会把2026年的日程也展示出来

2.插入数据透视表

将数据做一个数据透视表,将字段拖入行或者列区域

3.插入日程表

插入一个日程表,挡住数据和透视表,修改一个想要的日程表样式

4.插入代码

在工作表中插入以下代码,一个日程表控制普通单元格的控件就做好啦

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)    Dim slc As SlicerCache    Set slc = ActiveWorkbook.SlicerCaches("NativeTimeline_日期")    On Error Resume Next    Range("C10").Value = slc.TimelineState.StartDate    Range("C11").Value = slc.TimelineState.EndDate     If Err.Number = 1004 Then        Range("C10").Value = Range("B2").Value        Range("C11").Value = Range("B3").Value + 1    End IfEnd Sub
效果如下:

长期看我文章的同学可能发现了,这与代码控制切片器的方式不能说一模一样,只能说完全相同,因为日程表只是切片器的另一种类型而已,所以,在代码中,我们也就只需获取切片器的一个属性,也就是切片器的TimelineState属性,就代表日程表啦。

好了,本期教程就到这里啦,走过路过的点个关注分享一下吧,谢谢啦

求关注-求星标-求点赞-求看-求分享

Excel应用教程
主要提供Excel vba,函数,图表,数据透视表,pq,Js等教程
 最新文章