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