vba抓取网页数据(《VBA信息获取与处理》教程之EXCEL工作表数据的读取、回填和查找)

优采云 发布时间: 2022-01-16 07:07

  vba抓取网页数据(《VBA信息获取与处理》教程之EXCEL工作表数据的读取、回填和查找)

  【分享成果,用正能量欢欣鼓舞】人生的真谛,就是用简单客观的态度去解决人生需要面对的诸多问题,去应对那些复杂的纠葛、懦弱的悲哀,让生活成为一种和谐和谐,培养一种不随*敏*感*词*。俗话说得好,眼界开阔,人生幸福之禅。

  《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、工作表和文件夹信息的获取,图形信息的获取,以及自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上都进行了测试。它非常抽象,具有更多的研究价值。

  本课程由两卷八十四讲组成。今天的内容是专题4《EXCEL工作表数据的读取、回填和查找》第1讲:数据存储与代码操作时间对比

  

  第 1 节 工作表数据和数组之间的传输比较

  工作表单元格数据和 VBA 变量之间的数据传输是一种经常应用的操作。此操作比其他操作花费更多时间,因此我们的原则是将此操作保持在最低频率。通过一次操作(而不是对单元格的一次操作)将数据传递到数组,或将数组数据传递到工作表,可以大大提高 Excel 应用程序的性能。一般规则是:如果你需要对VBA中的数据做大量的计算,你应该将工作表中的所有值转移到一个数组中,对数组进行计算,然后用数组回填工作表可能被利用的数据。这样的操作将工作表和 VBA 之间的传输次数保持在最低限度。例如,

  我们在VBA中处理数据时,一般有三种选择和使用,一种是将数据存储在数组中,另一种是将数据存储在字典中,第三种不是在内存中处理,而是读取和直接在工作表中处理。

  1 将工作表数据存储在数组中,在内存中处理数据

  我们先解释一下上面的第一种方案,就是将工作表数据存储在一个数组中,然后在内存中处理数据。为了验证处理的效果,我们在工作表中给出2000条数据,然后先将这些数据读入数组,然后在数组中求和,我们看下面的代码:

  Sub MYNZ() '数组求和

  t = 定时器

  工作表(“SHEET1”)。选择

  Dim Arr() 作为变体

  Arr = 范围(“A1:A2000”)

  总和 = 0

  对于 R = 1 到 UBound(Arr, 1)

  MYSUM = MYSUM + Arr(R,​​ 1)

  下一个

  t2 = 定时器 - t

  MsgBox "总和是:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "秒"

  结束子

  代码截图:

  

  这些代码对于中级以上的朋友来说非常容易理解,只是思路问题。代码不再解释。

  看看下面的运行结果:

  

  运行结果:

  

  2 将工作表数据存储在字典中,处理内存中的数据

  我们来解释一下上面的第二种方案,即将工作表数据存储在字典中,然后在内存中处理数据。为了验证处理的效果,我们也在工作表中给出同样的2000条数据,然后先将这些数据读入字典,然后计算总和,我们看下面的代码:

  Sub MYNZA() '字典求和

  t = 定时器

  工作表(“SHEET1”)。选择

  Dim Arr() 作为变体

  Arr = 范围(“A1:A2000”)

  设置 myDic = CreateObject("scripting.dictionary")

  对于 i = 1 到 UBound(Arr)

  myDic(i) = Arr(i, 1) '初始化字典

  MYSUM = MYSUM + myDic(i)

  接下来我

  t2 = 定时器 - t

  MsgBox "总和是:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "秒"

  结束子

  代码截图:

  

  运行代码的结果:

  

  3 直接在工作表中处理数据

  最后,我们来解释一下上面的第三种方案,直接在工作表中处理数据。为了验证处理的效果,我们也在工作表中给出同样的2000条数据,然后在工作表中直接计算这些数据。和处理,我们看下面的代码:

  Sub MYNZB() '工作表总和

  t = 定时器

  我 = 1

  工作表(“SHEET1”)。选择

  总和 = 0

  Do While Cells(i, 1) ""

  MYSUM = MYSUM + 单元格(i, 1)

  我 = 我 + 1

  环形

  t2 = 定时器 - t

  MsgBox "总和是:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "秒"

  结束子

  代码截图:

  

  运行代码:

  

  我们看一下数据的运行结果,可以看出运行的效率,但是要提醒大家注意:

  ①不要一味追求效率,注意看懂我的文章文章《VBA程序运行时优化与视觉效果》。

  ② 每个方案都有自己的可用价值。例如,字典的排序是一种非常有效的方法。

  回到本节的知识点:实现工作表和VBA之间的数据传输有哪些解决方案?每个是什么?请根据自己的经验仔细了解每个选项的优缺点。

  本主题的参考程序文件:004 Worksheet.XLSM

  

  我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:

  ① 7→1→3→2→6→5或7→4→3→2→6→5。

  ② 7→8

  各套课程内容介绍:

  第7套教程(共三册):《VBA的EXCEL应用》:VBA基础讲解

  第一套教程(共三册):《VBA代码解决方案》:入门后的改进教程

  第四套教程(16G):VBA代码解决视频(第一套视频讲解)

  第三套教程(共两册):《VBA数组与字典解法》:数组与字典的特别讲解

  第二套教程(共两册):《VBA数据库解决方案》:是对数据库的专门讲解

  第六套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络和跨程序应用

  第五套教程(两册):VBA中类的解释与利用:类与接口技术讲解

  第8套教程(共三册):VBA的Word应用(最新教程):VBA在word中的使用

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线