玖叶教程网

前端编程开发入门

VBA编程,如何用代码进行整列数据查询,源代码复制就可使用

数据查询在Excel工作表中应用十分普遍,工作表应用的一个重点,就是对数据进行有序整理,而查询是其整理阶段的一个重要方面。

如下图所示,通过某一列数据内容可对数据表进行查询并显示。

以合同信息为例,来进行任何一列数据项目的查询。

其重点就是搜索条件设置,如完全条件匹配,和模糊匹配。

完全匹配就是对条件进行严格比较,进行搜索,模糊匹配就是被搜索的数据里包含条件内容即可。

严格条件匹配代码:

Public Sub SelectStr(xCap As String, icx As String)
On Error Resume Next
Dim xArr, xi As Long, ir As Long, ic As Long, ri As Integer
Dim s As Worksheet, a As Worksheet, R As Range, xR As Range
Set a = ActiveSheet
Set s = ThisWorkbook.Worksheets("合同台账")
Set R = a.Range("C3:R3")
xArr = s.Range("B10").CurrentRegion
ir = UBound(xArr, 1)
ic = UBound(xArr, 2)
For xi = LBound(xArr, 1) To UBound(xArr, 1)
    If xArr(xi, icx) = xCap Then
        R.Insert Shift:=xlDown
        Set R = a.Range("C3:R3")
        For ri = 1 To R.Count
            R.Item(ri).Value = xArr(xi, ri)
        Next ri
    End If
Next xi
Set s = Nothing
End Sub

模糊匹配搜索代码:

Public Sub SelectStr(xCap As String, icx As String)
On Error Resume Next
Dim xArr, xi As Long, ir As Long, ic As Long, ri As Integer
Dim s As Worksheet, a As Worksheet, R As Range, xR As Range
Set a = ActiveSheet
Set s = ThisWorkbook.Worksheets("合同台账")
Set R = a.Range("C3:R3")
xArr = s.Range("B10").CurrentRegion
ir = UBound(xArr, 1)
ic = UBound(xArr, 2)
For xi = LBound(xArr, 1) To UBound(xArr, 1)
    If VBA.InStr(1, xArr(xi, icx), xCap, vbTextCompare) <> 0 Then
        R.Insert Shift:=xlDown
        Set R = a.Range("C3:R3")
        For ri = 1 To R.Count
            R.Item(ri).Value = xArr(xi, ri)
        Next ri
    End If
Next xi
Set s = Nothing
End Sub

两段代码整体相同,不同之处在于条件设置。

一个是"等于"比较,一个是InStr函数返回值判定。

InStr(Star,String1,String2)函数返回一个数值或Null,如果在一个字符串找到了另一个,那么就返回字符串所在位置。

String1是要搜索的字符串,String2就是要找的字符串,也就是说如果在String1中找到了String2那么就返回位置。

返回位置不是0,或者Null,就说明找到了。

严格来说上述代码还应该再加一个Null值判断,这里不加,也不影响使用。

查询是个很复杂的逻辑过程,可以用多种方法实现,最好在应用的时候使用数组,效果不是一般的好。

欢迎关注、收藏

---END---

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言