excel vba 不等于_【学习心得】你了解Excel中的VBA吗?进来看看?

前言:

今天本来准备尝试写一篇关于机器学习的文章记录一下开学生活,然后就开始找数据,还是Excel格式的数据。因为数据量太大的原因,我就想到用python来处理初始数据,前几篇文章介绍了openpyxl,大家应该还有印象。本来我以为利用openpyxl处理起来会得心应手,结果出乎我所料,这一次的数据处理用这个库竟然不那么"容易",这里的不容易是指在处理过程当中让我心烦意乱,代码冗余让我难受。究其原因,我认为是我自己非要"大材小用"了,本来openpyxl我是很看好的,结果非要拿来处理琐碎数据,自找苦吃。

正文:

于是,想起来之前用过的Excel自带的VBA语言,我就尝试用VBA进行数据处理,发现思路清晰,处理过程不拖泥带水,现将代码解析奉上,以飨读者。真的非常简单,而且一学就会,希望大家跟着走一遍。

首先原始数据表如下图,在这个excel文件中,共有名称为2001至2016共16个sheet表,并且这16个表数据结构一致

a7e408f2434d5fcc30cc68b0eb947e3c.png

如图所示,我的要求是:新建一个sheet表,命名为"newsheet",然后依次提取上图中每个表格黄色和橙色标题下的数据,并且把橙色标题放在第一列,为帮助大家理解,我先上结果图(或者说效果图)如下:

762fa2871c6bc5d00d22b9e0ba0515fb.png

那么,现在,我们可以想象一下,如果要满足这个数据处理要求,我们应该怎么办呢?

刚才说了,用VBA进行编程处理,首先打开Excel中的VBA编程小窗口,如下图所示:

336edde83480d9095a00074f241cf925.png

然后在第二步中的空白代码框里输入以下代码,然后点击运行按钮,就实现了我们上面提到的数据处理要求,接下来咱们看看这个代码是怎么为我们工作的:

b03bdcd0f4ea1b8731f6867c1d2d2215.png

乍一看上面这个代码挺长!看着让人头疼!!其实现在跟着我一起剖析此代码,你会发现特简单!!!

先看整体结构,开头如下所示,意思是我们创建了一个名称叫做"复制感兴趣区域"的过程,所谓过程的意思就是接下来通过一个什么样的程序实现我们的要求:

e57c29bed53a839eee5ac6748340edd3.png

结尾如下,意思是这个过程结束了,可以鸣金收兵了:

b3166893117c66c853eaefa48e9fb1b9.png

接下来是:

eaf5e166e66a5bfaf5080813fbb0b442.png

这句代码的意思是在名称为"2016"的sheet表之后新建一个名为"newsheet"的表格。为什么要在2016这个表后面新建呢?其实就是这个表是最后一个表,新建表放在最后我觉得比较美观而已,新建在2015、2010等表的后面都可以,不强制…

紧接着是:

217e7a00591b45f868d9d6f87d4984e4.png

这个代码看似很长,实际上就是一句代码重复执行功能罢了,目的在于复制表头。以第一行为例,意思是:让新建表格的A1单元格的值等于第一个sheet表中的Q2单元格的值。后面代码以此类推…可能你会问,为什么要等于第一个sheet表呢??因为前面说过了,每个表格数据结构都是一样滴~等于任何一个表的表头都一样的,把代码中的sheets(1)改成sheets(2)、sheets(3)等等效果都一样。

接下来是重头戏:

5d7e11d982a9eac4a8d0050dc5cd7fcd.png

映入眼帘的首先就是c=2,这里的这个c的值实际上就是操作过程中不断动态变化的新建sheet表(newsheet)的当前工作行数的值。紧接着是一个for循环,也就是说让i从1到16循环16次,结合前文,你应该能猜出,这个16次的含义是依次遍历16个表格进行数据提取。那么现在关键就在于如何提取这个数据,大家看到上面我用红框圈起来了四个部分,实际上这四个部分也是借用一个功能的模板,现在我挑选第二个红框部分进行讲解,代码如下,解释请直接看注释:

59b207e98357b5f8da85f4149a6da454.png

到此数据处理结束,结果图上面已经给出了

Ok,初始数据有了,接下来我可以愉快的尝试机器学习的代码了,如果尝试了机器学习,继续在此记录分享给大家,喜欢的话就点个赞啊大兄弟,我也好有动力分享出来哈哈。因为代码格式上传后会乱,所以需要源代码的可以发送消息“我要建议”给公众号(“科研萌新”公众号),会回复邮箱,联系邮箱索要即可。

不妥之处还请大家指正,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值