ExcelVBA——数组运用工作表函数

作者: 猛犸象和剑齿虎 | 来源:发表于2019-06-05 09:24 被阅读72次

    在工作表支持数组的函数,很多也支持VBA数组。返回结果,当然也是一个数组。嘿嘿。
    如sumif,countif,match,index,vlookup.....

    index工作表函数可以对VBA二维数组进行1行或1列的截取。


    image.png
    Sub test()
    arr = [a2:g13]
    arr1 = WorksheetFunction.Index(arr, 0, 2)
    arr2 = WorksheetFunction.Index(arr, 3, 0)
    End Sub
    
    image.png

    我们利用index做一个简单的查询系统。

    Sub 查询系统()
    [i3:o999].Clear
    arr = Range("a2", Cells(Rows.Count, "g").End(xlUp))
    For i = 1 To UBound(arr)
        If arr(i, 1) Like [j1] Then
            n = n + 1
            Cells(n + 2, "i").Resize(1, 7) = WorksheetFunction.Index(arr, i, 0)
        End If
    Next
    End Sub
    
    image.png
    • 介绍一些EXCEL简单的通配符。
      *表示匹配0个或多个。
      ?表示一个。
      它们都可以用like对比出相似项进行筛选,就像excel自带的查询一样(ctrl+f),都支持通配符的模糊匹配。
      当然正则表达式是更为强大的字符处理技术,我们在今后学习时要加以区分。
      函数是简化代码的利器,这里如果不用index函数,可能要用join合并,然后spilit拆分,这样代码的逻辑关系会更加的复杂,写代码难度也会相应增加。

    数组快速格式化单元格

    image.png
    Sub VBA数组格式化单元格()
    Cells.ClearFormats
    arr = Range("g2:g" & Cells(Rows.Count, "g").End(xlUp).Row)
    For i = 1 To UBound(arr)
        If arr(i, 1) >= 330 Then
            Set Rng = Cells(i + 1, "g").EntireRow.Range("a1:g1")
            n = n + 1
            If n = 1 Then Set rngs = Rng Else Set rngs = Union(rngs, Rng)
            k = rngs.Address
        End If
    Next
    rngs.Interior.ColorIndex = 3
    End Sub
    

    EntireRow代表整行
    interior.colorinder= 代表单元格底纹颜色设置
    ClearFormats清除格式

    相关文章

      网友评论

        本文标题:ExcelVBA——数组运用工作表函数

        本文链接:https://www.haomeiwen.com/subject/tzkrxctx.html