excel网页数据抓取vba(通过一个循环方法快速实现数据的有序提取(图))
优采云 发布时间: 2022-04-14 01:26excel网页数据抓取vba(通过一个循环方法快速实现数据的有序提取(图))
Excel 的强项是数据处理。工作中会有很多相同或相似的数据,需要统一抽取出来进行综合判断。
通过循环的方法可以快速实现数据的有序提取。
本节介绍如何从工作表中提取相关数据并将其分配给 ComboBox 控件。
组合控件可以以下拉列表的形式给出一些选项进行操作。
如果选项很多,选择起来也是一件很痛苦的事情,所以可以通过一些模糊查询自动过滤,然后给出一些可能需要的选项。
这也是为了最大限度地提高应用程序的操作便利性而进行的数据处理。
此类应用程序广泛用于主要搜索引擎。当你输入一个字符时,会自动列出相关的热词,就是这个意思。
下面的代码将具体实现这个函数的使用。
首先,在名为 ComboBox1 的工作表中插入一个 ComboBox 控件。
编辑以下代码:
Private Sub ComboBox1_Change()
Dim xStr As String
xStr = Me.ComboBox1.Value
With Me.ComboBox1
.Clear
.Value = xStr
.List = GetComList(xStr)’调用函数
End With
End Sub
这段代码是组合框内容发生变化时的事件,即输入字符时会执行的一些过程。
通过列表属性为组合控件分配一个值。
这里调用了一个自定义函数。
功能代码:
Public Function GetComList(xStr As String) '返回列表
Dim xLrr, xi As Integer
ReDim xLrr(0)
xStr = VBA.UCase(VBA.Trim(xStr))
If VBA.Len(xStr) = 0 Then '如果是查找空值
xLrr(0) = ""
GetComList = xLrr
Erase xLrr
Exit Function
End If
'查找列表值
Dim xArr, i As Integer, xc As Integer
xc = 3 '查找列号
xi = 0
xArr = ActiveSheet.Range("A2").CurrentRegion
For xi = LBound(xArr, 1) To UBound(xArr, 1)'判断是否找到
If VBA.InStr(1, VBA.UCase(VBA.Trim(xArr(xi, xc))), xStr, vbTextCompare) 0 Then
ReDim Preserve xLrr(i)
xLrr(i) = xArr(xi, xc)
i = i + 1
End If
Next xi
GetComList = xLrr
Erase xLrr
Erase xArr
End Function
通过上面的代码,可以检索到工作表某列的数据,然后比较ComboBox组合框的内容。如果找到相关内容,将找到的值赋给组合框,即可选择。
本例是检索第三列,即 xc 的值。
根据一些全自动化操作,可以实现一些复杂、重复性的手工工作,也是办公自动化应用最有效的方法。