|
楼主 |
发表于 2019-1-21 21:32
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
感谢各位。
今天又想到一个类模块,可以用来在数组中做模糊查询或者精确查询。返回查找到数据的位置的一个数组。
测试的代码如下:
- Sub teee()
- Dim dw As New 数组
- rx = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
- ry = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
- ar = Range(Cells(1, 1), Cells(rx, ry))
- n = dw.精确位置("贺有志", ar)
- Stop
- End Sub
复制代码
类模块的代码如下:
- Dim kw As New 数组
- Dim rx, ry, ar, y, n, 次数
- Dim c(65536)
- ar = 数组
- For y = 1 To UBound(ar, 2)
- n = Application.Match("*" & 查询内容 & "*", Application.Index(ar, , y), 0)
- If IsError(n) Then n = 0
- If n > 0 Then 次数 = 次数 + 1: c(次数) = n & "," & y
- Next y
- If 第几次出现 = "" Then 第几次出现 = 1
- If 次数 > 0 Then
- 模糊位置 = Split(c(第几次出现), ",")
- Else
- 模糊位置 = Array(0, 0)
- End If
- End Function
- Function 精确位置(查询内容 As String, 数组 As Variant, Optional 第几次出现 As String) As Variant
- Dim kw As New 数组
- Dim rx, ry, ar, y, n, 次数
- Dim c(65536)
- ar = 数组
- For y = 1 To UBound(ar, 2)
- n = Application.Match(查询内容, Application.Index(ar, , y), 0)
- If IsError(n) Then n = 0
- If n > 0 Then 次数 = 次数 + 1: c(次数) = n & "," & y
- Next y
- If 第几次出现 = "" Then 第几次出现 = 1
- If 次数 > 0 Then
- 精确位置 = Split(c(第几次出现), ",")
- Else
- 精确位置 = Array(0, 0)
- End If
- End Function
复制代码
自己水平有限,但求不玷污EXCEL就好。 |
|