Public Function iFun(c As Range, n As Integer, ParamArray a() As Variant) '定义一个函数iFun() '()内是参数列表,见上面的说明 Application.Volatile '将函数定义为易失性函数(当参数的值改动时,自动重算) On Error GoTo 100 '发生错误时,跳到行 100处,执行最后一句 Dim i As Integer, t As Range, tt As Boolean '定义 个变量 i = a(LBound(a)).Columns.Count '取得第一个工作表区域的列的数量 If i < n Then iFun = "#错误n": Exit Function '如果列数小于参数n,报错"#错误n"并退出 For i = LBound(a) To UBound(a) '循环每个参数a(每个工作表区域) Set t = a(i).Columns(1).Find(c.Value, , xlValues, xlWhole) '在每个工作表区域中,查找 第一个参数c的值,赋值给t变量 If Not (t Is Nothing) Then tt = True: Exit For '如果找到了,就退出 Next '没有找到就继续找,直到循环完毕 If tt Then iFun = t.Offset(0, n - 1).Value Else iFun = "#N/A" '循环完毕后,判断是否找到, '如果找到,就取得同行的后面列的值, '如果没找到,返回结果"#N/A" Exit Function '如果程序没有出错,正常退出 100: '行 iFun = "#错误0" '错误时,跳到此处,返回并报错"#错误0" End Function ------------ |
|