Excel VBA之函数篇-3.10变态的老板要求(2),按照星期来统计数据

Excel VBA之函数篇-3.10变态的老板要求(2),按照星期来统计数据

前景提要

忙完了一些工作的事情,公众号恢复日更啦~~

之前我们分享了如何判断一个日期是否是周末,对于部分老板的这种个性要求,也是得到了解决,然而事实并非我所预料的这般,当那篇文章写出去没有多久之后,我一同事就问我,能不能将所有的日期都转化成为星期啊,我当时就方了,难道老板看到了我的文章!赶紧询问了下,原来是我们公司的老板也提出过同样的要求,老板想要知道每个每天的产品订单数据,按照星期这样的方式来汇总,方便他了解订单的分布规律以及员工的工作饱和度。

看来这样的需求,并不仅仅出现在我们之前假设的商场店铺中,通信行业居然也有这样的需求啊,既然如此,那么我们就有必要来学习下如何将日期转化成为具体的星期几了

函数说明

想要将日期转化成为星期,方法有很多,再VBA中比较简单实用的就是通过format()函数来实现,format()主要是用来转化数据格式的,在之前最初我们学习创建文件夹的时候,也接触过,那一次我们是用它来指定日期的格式的,不知道小伙伴们还有没有印象,今天我们就尝试用它来转化日期格式,为了让代码更加的又通用性,我们这里尝试将日期转化成为中文的星期几,英文的星期几这两种不同的格式,也方便一些外企工作需要的童鞋。

这里的场景,我想了下,我同事的使用场景是现成的第三方数据,来源可能是网络导出或者是其他渠道的手工汇总数据,日期格式不排除是多种多样的,这里我们就大致按照这样的场景来写代码,后期大家还有什么其他的场景需求或者是建议,也可以告诉我,我在优化,毕竟我的思维也有限制。

上代码

这里假设我们模式的表格是这样的(记性好的童鞋应该记得这是我们之前将简单的数据录入的时候的表)

这里假设这些都是我们的销售产品的日期,可以看出来,销售日期因为不同的来源和人为的输入习惯的不同,非常的乱,这里我们尝试着直接转化成为统一的星期格式,并且区分中文和英文两种格式。

Sub test()Dim LastCol&, i&, CH$, EN$LastCol = Cells(Rows.Count, "I").End(xlUp).RowFor i = 2 To LastCol CH = Format(Cells(i, "I"), "aaaa") EN = Format(Cells(i, 9), "dddd") Cells(i, "I").Offset(0, 1) = CH Cells(i, "I").Offset(0, 2) = ENNext iEnd Sub

我们来看看最终的效果

虽然日期格式的不相同,但是我们还是成功的转化成为了统一的星期几的格式,效果非常的完美,这里我们随机抽查一个来看看是不是对的

事实证明我们是正确的,顺带大家可以提前考虑下国庆要怎么请假了,哈哈。

代码解析

本次的代码依然是非常的简单,遵循简单实用,首先我们先获得当前日期那一列总共有多少行

LastCol = Cells(Rows.Count, "I").End(xlUp).Row

这个代码的使用方法,我们在之前就已经学习过了,不知道大家有没有留意到,我在今天的这个使用方法和之前的有一点不一样的地方,在之前我们再“I”这里是填写输入的,代表I是第几列就写入数字几,但是随着我们要求的不断的提升,我们不可能每次都去数是第几列,所以这里我们升级下,写成对应的列的名称也是可以的,注意,这里一定要加双引号,否则会报错的。

之后就是简单的遍历循环结构体了,这里重点介绍下format()函数如何转化成为日期的,其实也不难,大家只需要记住格式就是format(date,格式要求),date就是我们要转换的日期,格式有很多种针对本案例,我们主要是使用“aaaa”转换成为中文星期几的格式,“dddd”转换成为英文星期几的格式,后面当我们讲到format函数的时候,我给多列举一些常用的格式告诉大家,方便大家根据不同的场合灵活转换自己的需求

之后我们得到了中文的星期,和英文的星期之后就可以填入表格中了,这里依然是使用offset()函数来实现的,之前已经说过很多次了,只要是用来实现单元格的位移的,后面我们会单独讲下他的用法。

完整代码及注释

Sub test()
Dim LastCol&, i&, CH$, EN$LastCol = Cells(Rows.Count, "I").End(xlUp).Row '定位最后一行的位置For i = 2 To LastCol '循环遍历 CH = Format(Cells(i, "I"), "aaaa") '转换成为中文星期 EN = Format(Cells(i, 9), "dddd") '转换成为英文星期 Cells(i, "I").Offset(0, 1) = CH Cells(i, "I").Offset(0, 2) = ENNext iEnd Sub总结

==============================================

好了今天的分享就到这里了,我们在本次继续完善了一下关于星期的判断,通过本节的分享,大家不仅仅是可以知道日期指向的时间是否是周末,也可以知道日期指向的当天是星期几,如果报告是给老外看的话,也可以转化成为英文版的星期,一下子通用性就提高了很多了。

==============================================

如果你有什么想要分享的,或者有什么想要知道的,都可以留言等方式告诉我,大家一起努力进步。

好了,明晚19:00,准时再见。

(0)

相关推荐

  • VBA案例精选 快速输入指定日期

    代码运行结果: 代码截图: 代码文本: Public Sub 技巧() Dim myRange As Range Cells.Clear     '删除工作表的数据 Set myRange = Ran ...

  • Excel函数(七)

    先祝大家新年快乐.阖家幸福! 大年夜,更一发简单点的.建议收藏,毕竟涉及的参数较多,需要用到时候不一定都能记得,可以找出本文查找用法. 日期怎么转成星期?怎么提取年.月.日?时间怎么添加上.下午?数字 ...

  • Excel VBA之函数篇-3.22 轻松转换单元格格式

    前景提要 最近在工作的时候,经常碰到不少的同事跑过来让我帮忙看看单元格的格式之类的修饰问题,其实这也算是大家日常工作中比较常见的操作,因为不同的工作环节不同的要求,就算是相同的数据,大家对于展示上面的 ...

  • Excel VBA之函数篇-3.21简易数字提取法 用的好方便过正则

    前景提要 最近有一些童鞋后台留言反馈,自己在日常的工作中需要做一些数据的提取,手工操作的话,是比较的麻烦并且浪费时间,既然VBA如何强大,是不是有一些比较好的方法呢?小编写了下,还真有一个比较简单的函 ...

  • Excel VBA之函数篇-3.20 半角or 全角 数据处理并不难

    场景说明 可能看见标题的时候,很多的童鞋都是懵逼的状态的,什么全角半角?不太了解吗?看来如果这些童鞋的公司也有这样的要求的话,估计就要遭殃咯,我们来看下右下角的输入法, 普遍常用的就是搜狗输入法和QQ ...

  • Excel VBA之函数篇-3.19大数据时代必备查找技能 万条数据能奈我何

    前景提要 经常看电视或者是一些招聘信息的童鞋,应该就比较熟悉大数据这个概念,大数据简单的理解就是非常庞大的数据处理,数据量的提升,最直接的结果就是普通的数据处理方法越来越慢了,现在也是推出了很多种针对 ...

  • Excel VBA之函数篇-3.18跨越sheet统计数据 VBA强大的超乎想象

    前景提要 昨天我们分享了那个案例之后,相信很多的童鞋都会觉得那个函数有点多此一举,虽然可以形成透视表,但是面对数据不大的情况下,通过简单的复制粘贴在直接用透视表就可以了,并不需要写代码,这说法大家还没 ...

  • Excel VBA之函数篇-3.17多列数据统计不头疼,准时下班好轻松

    前景提要最近有同事让我帮忙看看有没有什么好方法来帮助他统计下假期期间各分店的销售总和,求和,不是有最简单的求和函数SUM吗?直接丢给他一句不是有求和公式嘛,但是他还是一脸无奈的让我过去帮忙,本着大家都 ...

  • Excel VBA之函数篇-3.16多样筛选组合任君选 筛选功能从此是路人

    前景提要 昨天我们分享了如何通过like()函数来实现数据的筛选,可能是因为昨天忙于赶车,比较着急,我看了下我好像并没有完全介绍完一些比较常用的功能,今天就继续来分享下like()函数在筛选方面的强大 ...

  • Excel VBA之函数篇-3.15数据筛选无烦恼 多样组合来助力

    Excel VBA之函数篇-3.15数据筛选无烦恼      多样组合来助力 前景提要 在日常的工作中,数据筛选是我们经常都需要面对的事情,excel在这方面提供的选择并不算是很多,最常见的筛选功能, ...

  • Excel VBA之函数篇-3.14数据的高级查找,快速通过区间划分等级

    Excel VBA之函数篇-3.14数据的高级查找,快速通过区间划分等级 前景提要 在前面几次的学习中,我们学习了一些关于like()函数的简易的使用方法,今天我们来继续学习下相关方面的知识,今天我们 ...