作者moodyblue ()
看板Accounting
标题[心得] VBA如何设置回圈将多余资料删除
时间Sun Apr 14 19:52:09 2019
VBA如何设置回圈将多余资料删除
网志图文版:
https://www.b88104069.com/archives/4376
综合本书到目前为止的内容,可知利用Excel取得网页资料并不难,麻烦的是整批量下载
的内容,於工作表上会有很多不必要的东西,例如重覆的标题行和与核心资料无关的讯息
,所幸於整理资料表这方面,Excel刚好是专家,再搭配VBA可以达到很高效率的作业。这
一节便以历史汇率为范例,介绍如何适当地删除多余的资料。
一、结合第三节利用「QueryTables.Add」取得网页汇率的程式码、和上一节利用「
Application.InputBox」输入年份币别的方法,编写VBA程式码如图所示。
二、执行程式,选择2016年的港币(HKD)。为了方便截图,直接取得的资料在格式上已经
先调整了栏寛,并且把日期隐藏起来,但是有两个问题,一个是图片绿色部份,标题栏位
的格式跑掉了,另一个是图片黄色部份,在不同月份之间会有空行存在。
三、编写删除空白行的程式码,意思是找出A栏中,储存格特殊状态为空白的对象物件,
然後执行删除整行的方法。这一行程式码为惯常用法,看起来有点复杂,但一经拆解,其
实在架构上仍然是「物件.方法」的标准VBA语法。
四、执行「DeleteRows」巨集程式,结果如图所示,原本黄色部份的空行、包括一部份绿
色A栏为空格,整行都被删除了,不过仍然有多余的标题栏存在。
五、不同版本的Excel最大行数也不同,以作者2013年的Office而言,在任一工作表,按
住「Ctrl」键再按方向键「下」,直接跳到最後一行,如图所示为「1048576」,这便是
目前Excel最大行数。如果想要针对整张工作表作整理,例如删除含某特定内容储存格所
在的行,首先必须先知道最大行数。
六、编写程式如图所示,设置以i为变数的回圈,从「1048576」到「2」,「Step -1」表
示为递减顺序,保留第一行,是因为第一行应当为标题栏。在回圈里设计储存格内容的判
断式,满足条件时删除第i行(Rows(i).Delete)。
七、执行结果如同预期,成功将其他多余的资料都删除了,只保留汇率的部份,截图是每
个月显示三天,其余隐藏,另外也手工修改了标题栏。
这一节介绍两种方法删除资料,其一是删除空行,其二是删除特定内容的整行。依照范例
程式码,必须两个方法的巨集都执行过,才能预期的效果。其实如果理解了删除特定内容
的程式码精髓,在程式设上可以很灵活,设计出一次到位的程序,扩大而言,视不同网页
的结构状况,以类似程式设计,都可以在下载资料的同时,把多余不必要的内容删除掉。
在本书後面的章节,会再针对其他网页分享如何整理所取得的资料。
延伸阅读:
VBA如何依照所选择年份币别设定网址
https://www.b88104069.com/archives/4371
VBA如何批次取得网页资料
https://www.b88104069.com/archives/4366
VBA如何取得网页资料时自动整理格式
https://www.b88104069.com/archives/4362
--
周末,我们继续Excel:=>21.心得=>5.其他=>3.office
会计人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 183.209.120.99
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Accounting/M.1555242736.A.E51.html