查看: 22  |  回复: 0
  VBA代码 数组筛选
楼主
发表于 2025年3月18日 10:14
Function AraryFilterIndexAnd(arr, FilterArr, Optional toprow = 2)
    '单列range数组筛选 And条件 filter 得到源数组的行号
    ReDim brr(1 To UBound(arr))
    Dim k As Long
    
    For i = toprow To UBound(arr)
        For j = 0 To UBound(FilterArr) '对多个条件就行And操作
            'Debug.Print arr(i, 1), FilterArr(j)
            
            If InStr(1, arr(i, 1), FilterArr(j), vbTextCompare) = 0 Then
                '不存在直接退出 说明不满足and条件
                Exit For
            End If
        Next
        If j = UBound(FilterArr) + 1 Then
            '只有当上面条件数组 全部循环结束 才表示全部满足
            k = k + 1
            brr(k) = i '记录行号
        End If
    Next
    
    If k = 0 Then
        ReDim Preserve brr(1 To 1)
        brr(1) = -1
    Else
        ReDim Preserve brr(1 To k)
    End If
    
    AraryFilterIndexAnd = brr
End Function


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2025 MaNongKu.com