excel vba抓取网页数据(【分享成果,随喜正能量】你所忘却的,都曾记得)

优采云 发布时间: 2022-01-30 20:11

  excel vba抓取网页数据(【分享成果,随喜正能量】你所忘却的,都曾记得)

  【分享成果,欢喜正能量】忘记的,就记住了。你所履行的一切,你已经承诺。你失去的一切都是坚定的。你所有的哭泣都欢欣鼓舞。前面的路是从后面长出来的。你现在的样子是你过去的选择。抛开内心的烦恼,忘记失败的挫败感,封印痛苦的回忆,牢牢地踩在许多过去,将它们抛在脑后。选择瞬间清醒,就等于选择瞬间成长。用今天的时间沉溺于过去,是对今天的背叛和摧残,让今天成为明天的悔恨,用今天的时间沉溺于未来,是对明天最大的伤害和不尊重,让未来毫无支撑。

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

  本课程由两卷八十四讲组成。今天的内容是专题4《Excel工作表数据的读取、回填和查找》第6讲:使用VBA实现多工作表数据查找

  

  第 6 节 如何在多个工作表中查找给定值

  大家好,今天我们将讲这个话题的最后一讲,如何在多个工作表中找到一个给定的值。当然,这个给定值必须是工作表中的单个值。如果是多个值,我们可以稍微改动一下代码,这里就不详细解释了。

  1 在多个工作表中查找给定值需要首先找到每个工作表的名称

  要查找每个工作表的名称,我们只需要使用 ThisWorkbook.Worksheets.Item(i).Name 即可完成,我们看下面的代码:

  DimWSArray()

  n = ThisWorkbook.Worksheets.Count

  ReDim WSArray(1 到 n)

  对于 i = 1 到 n

  WSArray(i) = ThisWorkbook.Worksheets.Item(i).Name

  下一个

  代码解读:

  上面的代码首先创建了一个动态数组 WSArray(),它将用于存储每个工作表的名称。变量 n 是指当前工作簿中所有工作表的数量。得到这个数后,我们重新读取动态数组,给数组赋值。

  2 用单值搜索程序完成剩下的工作

  当我们得到每个工作表的名称后,我们可以在每个工作表中搜索并将结果放在 Cells(i, "i") 单元格中,我们看下面的代码:

  表(“表 7”)。选择

  Range("i2 : I3000").ClearContents

  我 = 2

  Do While Cells(i, "h") ""

  UU = 细胞(i,“h”)

  对于 t = 1 到 n

  设置 FJX = Sheets(WSArray(t)).Columns("A").Find(UU,lookat:=xlWhole)

  If Not FJX is nothing 那么

  Cells(i, "i") = Cells(i, "i") & " " & Sheets(WSArray(t)).Cells(FJX.Row, 2).Value

  万一

  下一个

  设置 FJX = 无

  我 = 我 + 1

  环形

  代码说明: Cells(i, "i") = Cells(i, "i") & " " & Sheets(WSArray(t)).Cells(FJX.Row, 2).Value Sheets 在这段代码( WSArray(t)) 是正在执行查找的工作表的名称,这个名字是由数组的值决定的,对每个工作表进行类似的操作后,在指定的单元格中得到最终的查询结果。注意我这里给出的是完全匹配搜索,实际使用时可以用不完全匹配搜索代替。

  3 多表查询总代码

  最后我给出整个过程的代码:

  Sub MYNZK() '多个工作表,每个工作表是一个唯一的查询

  DimWSArray()

  将 FJX 调暗为变体

  n = ThisWorkbook.Worksheets.Count

  ReDim WSArray(1 到 n)

  对于 i = 1 到 n

  WSArray(i) = ThisWorkbook.Worksheets.Item(i).Name

  下一个

  表(“表 7”)。选择

  Range("i2 : I3000").ClearContents

  我 = 2

  Do While Cells(i, "h") ""

  UU = 细胞(i,“h”)

  对于 t = 1 到 n

  设置 FJX = Sheets(WSArray(t)).Columns("A").Find(UU,lookat:=xlWhole)

  If Not FJX is nothing 那么

  Cells(i, "i") = Cells(i, "i") & " " & Sheets(WSArray(t)).Cells(FJX.Row, 2).Value

  万一

  下一个

  设置 FJX = 无

  我 = 我 + 1

  环形

  消息框(“确定”)

  结束子

  代码截图:

  

  代码注意事项:工作表名的使用要注意当前正在查询工作表,查询到的数据位于Sheets(“Sheet7”)的H列,结果返回到I列。

  由于代码比较简单,这里就不过多解释了。我们来看看返回的结果:

  

  最后,让我再提几个问题:

  1)如果给出要查询的工作表怎么办?如何处理?

  2)如果每个工作表中的数据不是唯一的怎么办?

  回到本节知识点:如何在多个工作表中实现查询?实施过程中的关键点是什么?

  本主题的参考程序文件: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人工客服


线