我是一名办公软件爱好者,喜欢Excel,会函数、会基础操作、也会一点VBA。现在和大家分享、交流一些excel的基础知识,欢迎爱好的和需要学习的朋友,相互学习、一起进步。如果你喜欢我的文章,请关注我,以便第一时间看到我分享的内容。
今天我分享的是用图表制作时钟,我们先看下面的动图效果演示(这个是刚制作完成的,还未美化):
EXCEL图表制作的时钟
目录:
- 效果演示;
- 数据构建原理;
- 数据构建结果;
- 图表制作;
- 图表美化;
- 设置时间自动更新;
数据构建的原理
(注:该部分内容有点烧脑,如果只为学习图表制作的操作,坐标的计算过程和原理可以忽略。但是需要看下后面构建好的数据,了解下数据表的格式。需要演示数据的朋友,可以关注我的头条号,给我私信消息,注明要时钟图表素材,我可以把演示数据直接发给你们)
EXCEL图表制作时钟,数据构建原理
本例中,我设置的表盘半径为4,表盘的圆心坐标为(6,6),然后结合这些参数,利用三角函数和正弦定理、余弦定理,分别计算出12个整点的坐标和48个分钟的X、Y坐标值。
如上图中的例子,要计算10点的X和Y坐标值。计算X坐标的公式如下:
=6+SIN(50/60*360*PI()/180)*4
注意:在Excel中,计算30°、60°角的SIN值、COS值,用的公式不是SIN(30)、COS(60),而应该用SIN(30*PI()/180)或COS(60*PI()/180)【其中的PI()就是π】
由于共有60个点的坐标要计算,所以我将整个圆分成60份,10点的位置刚好是第50份,那么角度就是50/60*360*PI()/180,然后配合正弦定理,计算出边长,再用圆心的X坐标值加上边长,既可以得到10点的X坐标值(SINα正弦函数,角度α>180°的时候,值为负数,10点位置的角度是300°,所以得到的这里得到的是负数)
同理,用余弦定理计算出10点的Y坐标值,公式如下:
=6+COS(50/60*360*PI()/180)*4
用以上两个公式,只需要修改每个分钟点相对于12点的角度(按顺时针方向,1分钟为1/60-360,2分钟为2/60*360…),就可以批量计算处每个点的X、Y坐标值。
数据构建的结果:
一、表盘设置
设置表盘的圆心坐标和半径值演示效果
我们设置表盘圆心坐标为(6,6),设置半径为4.
二、12个整点坐标值,数据详见下表
设置的时候,要结合表盘数据,以便在修改表盘参数的时候,整点坐标相应改变。这里用的12等分。
三、48个分钟坐标值,数据详见下表(部分数据)
分钟刻度坐标(部分数据)
设置的时候,要结合表盘数据,以便在修改表盘参数的时候,分钟坐标相应改变。这里用的60等分。
四、设置时针、分针、秒针坐标
1、设置时针、分针、秒针的坐标时,要结合现在的系统时间,故需要在表格中记录现在的时间,见【C1】单元格;
2、时针、分针、秒针的第一个点都是圆心位置,坐标为(6,6);
3、时间指示端的时针X、Y坐标公式为:
X坐标:=$C$3+SIN(MOD($C$1*24,12)/12*360*PI()/180)*($C$5-2)
Y坐标:=$C$4+COS(MOD($C$1*24,12)/12*360*PI()/180)*($C$5-2)
4、时间指示端的分针X、Y坐标公式为:
X坐标:=$C$3+SIN(--("0:"&TEXT($C$1,"M:S"))*24*360*PI()/180)*(C5-1)
Y坐标:=$C$4+COS(--("0:"&TEXT($C$1,"M:S"))*24*360*PI()/180)*($C$5-1)
5、时间指示端的秒针X、Y坐标公式为:
X坐标:=$C$3+SIN(TEXT($C$1,"S")/60*360*PI()/180)*$C$5
Y坐标:=$C$4+COS(TEXT($C$1,"S")/60*360*PI()/180)*$C$5
图表制作(重点内容)
本例使用的图表类型为:带平滑线和数据标记的散点图
带平滑线和数据标记的散点图
一、生成时钟的整点
生成时钟的时钟整点
二、生成时钟的分钟
生成时钟的分钟
三、生成时钟的时针、分针、秒针
生成时钟的时钟、分针、秒针
图表美化
时针、分针、秒针的样式、颜色、大小等设置,各位朋友可以自己摸索、尝试,这里的美化主要讲在图表中插入图片背景(其实,图表美化,我也不太会配色……尴尬)。操作如下:
图表美化,加入表盘背景
下图是表盘素材
表盘素材
设置时间自动更新
设置自动更新时间的代码
由于EXCEL不会每隔一秒自己更新一次数据,所以,我们需要借助VBA代码,让excel自动更新时间。使用的代码如下:
Option Explicit
Sub 开始() '开始自动更新时间和代码
Application.ScreenUpdating = False '关闭屏幕更新
ThisWorkbook.ActiveSheet.Range("C1") = Time '当前工作表C1单元格写入时间
Application.OnTime Now + TimeValue("00:00:01"), "开始" '启动自动计时,当前时间+1秒
End Sub
Sub 停止() '终止自动跟新时间的代码
Application.ScreenUpdating = False '关闭屏幕更新
On Error Resume Next '容错代码,遇到错误自动跳过,并执行后续代码
Application.OnTime Now + TimeValue("00:00:01"), "开始", , False '停止自动计时
End Sub
将以上代码复制到文件的VBE编辑器里面,然后再工作表中添加两个按钮,一个设置为开始计时,一个设置为停止计时。
完成后的效果
完成后的效果
到现在,制作过程展示完成,说下比较关键的地方:
1、构建数据,这个相对有点麻烦(尤其是这个例子,里面涉及到数学知识,估计好些人已经把,这也是制作图表最基础的地方,往往在很多时候,我们手上的数据无法直接用来制作图表,都需要根据图表的特点对数据进行二次加工,所以这个是学习基本功;
2、Excel的图表有很多种类型,使用的的时候,选择适合的,将数据的效果全部表达出来即可。