总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
在Excel的日常使用中,处理日期数据那就是家常便饭,而将日期格式数据转化为直观的“星期几”,更是提升表格可读性和分析效率的关键一步
1 实现功能
如下图所示,A列中存放的是日期类型的数据,现要求将它们转换成星期,并输出到B列
通常最简单的方式是使用TEXT公式并结合Excel自带的自动填充功能完成,如想显示中文星期使用“=TEXT(A2, "aaaa")”,或者使用“=TEXT(A2, "dddd")”还可以显示英文星期
然而,当这一步骤刚好是全自动化流程中的一个环节时,它会在预设的条件下自动触发并完成,整个过程就无法进行手工干预了
因此,面对需要高度自动化、追求“一键完成”效率的任务,理想的解决方案就是借助VBA宏。我们只需编写一小段代码,将其嵌入流程,即可实现瞬间转换,将我们从繁琐的重复性工作中彻底解放出来
看似南辕北辙的举动,实际则是为后续的自动化实现打下坚实的基础
2.1 操作步骤
- 在VBA编辑器左侧的“工程资源管理器”窗口中,右键点击你的工作簿名称,选择“插入” -> “模块”
返回Excel界面,顺次选择【开发工具】【宏】,选择宏名“ConvertToWeekDay”执行
2.2 代码实现
代码处理数据的流程如下:
由于Weekday返回1到7的整数,因此,还需要 Select Case 语句,将数字映射为对应的中文星期名称(如“星期一”、“星期二”等)
参考代码如下:
Sub ConvertToWeekDay() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim dateValue As Variant Dim WeekDayName As String Set ws = ActiveSheet '当前活动工作表 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row '获取A列最后一行 For i = 2 To lastRow '假设第1行是标题,从第2行开始 dateValue = ws.Cells(i, "A").Value If IsDate(dateValue) Then '使用Weekday函数获取数字,再转换为中文名称 Select Case Weekday(dateValue, vbSunday) '将星期日 (vbSunday) 定义为一周的第一天 Case 1: WeekDayName = "星期日" Case 2: WeekDayName = "星期一" Case 3: WeekDayName = "星期二" Case 4: WeekDayName = "星期三" Case 5: WeekDayName = "星期四" Case 6: WeekDayName = "星期五" Case 7: WeekDayName = "星期六" End Select ws.Cells(i, "B").Value = WeekDayName End If Next iEnd Sub
3 结尾
好了,今天的编程知识到此结束了。最后分享一个冷知识:为何开机或打开大型软件时会卡顿?
程序运行时,所需数据都需要从硬盘加载数据到内存,CPU再与内存进行高速数据交换。由于硬盘(尤其是机械硬盘)读写速度慢,而CPU处理数据速度极快,因此,一旦加载完毕,操作就会流畅了
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识