在工作表支持数组的函数,很多也支持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.pngSub 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清除格式
网友评论