乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel VBA函数篇-3.8上万条数据按照季度统计?季度是什么东东?-excel上下标

Excel VBA函数篇-3.8上万条数据按照季度统计?季度是什么东东?-excel上下标

作者:乔山办公网日期:

返回目录:excel表格制作

Excel VBA之函数篇-3.8excuse me?按照季度统计?季度是什么东东?

前景提要

今天周末,心里一百个不愿意,但是还是要起床上班,在这里羡慕下周末双休的童鞋,然后周末并不会太忙,也没什么事情,一般情况下,周末领导也不会出现的,所以小编忙完工作之后,就开始看视频了,可能是太投入,居然领导进来也没有感觉到,被领导抓个正着,当时那叫一个尴尬,领导可能觉得我太闲,分配给我一个任务,让我把公司去年每季度的销售和今年第一季度的销售最下对比,然后把数据分给他,我当场答应了(不是,我好像没得选啊)

转过头来,我忽然发现,季度这个东西我好像只在电视上看新闻报道的时候看到过这个东西,对于一个非财务方面的小白,你让我去做季度分析,我连季度怎么划分都快忘记了,我怎么分析啊,不过忽然想起来,再VBA中有一个函数好像就是和季度有关的,看来运气不错,有救了。

函数说明

还好自己的记性还算是不错,季度函数还真的是存在的,他就是DatePart(),具体的格式我已经忘记了,毕竟季度这个概念比较少用,我尝试写了下代码,他的格式应该是这样的DatePart("q",date),简单的说,我们只需要提供一个参数,就是第二个参数date,剩下的都是固定搭配,直接套用就可以得到标准的季度分配了,上个代码我们来演示下效果。

上代码

根据小编现在所处的这样的骑虎难下的场景,相信日常工作中,需要用到季度的时候,应该也是在年度总结或者季度总结的时候吧,那个时候面对的肯定不是我们之前举例中的那么几个数字了,肯定是成千上万行数据了,小编现在手上的这个数据。。。我看看60053条数据!这样的数据,如果我们还是继续使用普通的遍历循环的方法的话,效率很慢,可能电脑也会卡住的,这里我们使用数组,不要问我为什么,大数据时代,excel首选数组方法,高效!

为了展示测试效果,小编这次虚拟构造的测试数据有1048574行,已经差不多达到了excel 2013的极限了,我们来测试下需要使用多少时间,当然可能也会收到电脑配置的影响,数据多少有一些出入,但不会太大

Sub test()
Dim l&, arr, arr1(), i&, k&
T1 = Timer
l = Cells(Rows.Count, 1).End(xlUp).Row
arr = Range(Cells(1, 1), Cells(l, 1))
k = 0
For i = 1 To UBound(arr)
k = k + 1
ReDim Preserve arr1(1 To 1, 1 To k)
arr1(1, k) = "第" & DatePart("q", arr(i, 1)) & "季度"
Next i
Range(Cells(1, 2), Cells(l, 2)) = arr1
T = Timer - T1
MsgBox "程序总共耗时 " & T & " 秒"
End Sub

结果出来了,一行数据总共用了不到1分钟就出来结果了。成功的转化成为了我们想要的季度的形式,后面就可以操作数据分析,透视表,图标各种操作了。

Excel VBA函数篇-3.8上万条数据按照季度统计?季度是什么东东?

代码解析

因为牵扯到大数据,我们今天这里使用了数组,数组大家可能是第一次接触,他在excel中经常用来处理大数据的,数组是将内容存储到内存中,以此来提高计算的效率的,所以他的处理速度很快,在大数据时代,大家要开始慢慢的学习去使用数组方法,因为数组牵扯的方法和知识点,比较的多,这里暂时先不涉及,我们后面会细细的铺展开。

T1 = Timer
*******
T = Timer - T1
MsgBox "程序总共耗时 " & T & " 秒"

这一段代码主要是用来计算程序执行的时间的,对程序本身并无任何作用,我们可以先忽略,需要的时候也可以直接套用。

l = Cells(Rows.Count, 1).End(xlUp).Row

获取非空单元格的最大下标,这个我们在之前的分享中,已经介绍过了,在实际使用中,我们只需要更改下数字1为对应的行就可以了。

之后就是数组的使用方法了,这里我们先跳过,后面会详细说明,这里我们先记住这种方法,需要的时候直接套用即可,更改下arr所对应的数据源即可。

arr1(1, k) = "第" & DatePart("q", arr(i, 1)) & "季度"

这个就是我们今天的重点了,季度函数的使用,最开始的时候我们已经讲述了使用方法,我们只需要更换第二参数为指定的日期就可以了。 这里我们是将对应的第一行的日期拿过来得到对应的季度的。

Range(Cells(1, 2), Cells(l, 2)) = arr1

这句代码的作用,就是将我们得到的新的数组一次性填入第二列的操作,大家也可以先做了解,需要的时候也可以直接套用,这里将2改成我们需要的列就好。

总结

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

今天的分享就先到这里了,个人感觉今天写的有点不太好,可能是因为数组的这个模块,我们还没有分享,暂时无法展开关于数组的说明和讲述,所以中间觉得有点断断续续的,大家看起来可能有些不舒服(怪我),本来是打算介绍下季度函数DatePart()的使用的,正好自己再使用的过程中想到了大数据方面的处理,所以就把数组也带过来了,有点贪多,大家如果本节觉得有点模糊的话,可以选择掌握重点季度函数的用法,其他的先忽略,我后面尽量避免这种问题,抱歉!

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

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

因为基本上都是自学的,很多代码和知识都是来源于网络的,如果在分享的过程中,正好拿了某位大神的代码,请告诉我,我将标注代码来源出处,也方便大家学习分享,谢谢!

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

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

=============================历史相关文章==============================

Excel VBA之函数篇-3.5时间录入无烦恼,产品分析更精确

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

Excel VBA之函数篇-3.7自动录入节奏太快,加上延时等待更人性化

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网