Excel VBA查找在某列里查找指定值第N次出现的行对应列的值

1,536 次浏览

Excel VBA查找在某列里查找指定值第N次出现的行对应列的值

1. 整体功能

该VBA函数名为MyFind,用于在指定的单列范围内查找指定值的第n个匹配项,并返回该匹配项在指定列中的值。

2. 代码注释

Function MyFind(Value1, ByVal Range1 As Range, ByVal num As Integer, ByVal Col As Integer)
    '该函数名为MyFind,传入四个参数:待查找的值、查找范围、要查找的匹配项序号、目标值所在列号
    If Value1 = "" Then Exit Function
    '如果待查找的值为空字符串,则退出函数
    If Range1.Columns.Count > 1 Then Exit Function
    '如果查找范围的列数超过1,则退出函数
    For Each D In Range1
        '在查找范围内循环遍历每一个单元格
        If D.Value = Value1 Then
            '如果当前单元格的值与待查找的值相等,则执行以下语句
            c = c + 1
            '匹配项数量加1
            If c = num Then
                '如果当前匹配项数量等于要查找的匹配项序号,则执行以下语句
                v1 = D(1, Col)
                '将当前匹配项在目标列中的值赋给变量v1
                Exit For
                '跳出循环
            End If
        ElseIf IsEmpty(D) Then
            '如果当前单元格为空,则退出循环
            Exit For
        End If
    Next
    If v1 = "" Then v1 = "not"
    '如果变量v1为空,则将其赋值为字符串"not"
    MyFind = v1
    '将变量v1的值作为函数的返回值
End Function

VBA代码助手 人工智能生成代码 代码加密混淆密码破解

详细说明https://vbayyds.com/docs/vbahelper/shuoming