`
阅: 1045 | 回: 1
发表于2021/12/22 12:09:21 楼主 
头像 等级:初学者
积分:0
财富值:2.0
身份:普通用户

mlookup公式以有人升级为比xlookup更为强大的wlookup

现将vba代码上传到网站上真心希望更新if函数与lookup函数sum函数因为有很多大神都将功能加入到低版本的office上所以更多的低版本office又有了新的生命,在此也感谢格子社区现将代码呈上




Function Wlookup(V, vY, vh, Optional m)

 

 Dim arr, arr1, arr2()

 

 Dim k As Integer

 

 arr = vY

 

 arr1 = vh

 

       If UBound(arr1) = 1 Then

 

       arr1 = Application.Transpose(arr1)

 

       arr = Application.Transpose(arr)

 

       End If

 

ReDim arr2(1 To 1)

 

 For x = 1 To UBound(arr1)

 

    If arr(x, 1) = V Then

 

       Wlookup = arr1(x, 1)

 

       If IsMissing(m) Then

 

         Exit Function

 

       Else

 

        k = k + 1

 

        ReDim Preserve arr2(1 To k)

 

        arr2(k) = arr1(x, 1)

 

       End If

 

    End If

 

  Next x

 

  If m = 0 Then

 

    Wlookup = arr2(k)

 

  ElseIf m = -1 Then

 

   Wlookup = Join(arr2, ",")

 

  ElseIf m = -2 Then

 

   Wlookup = JS(V, vY, vh)

 

  Else

 

    Wlookup = arr2(m)

 

  End If

 

End Function

 

 

 

Function JS(J1, R1, R2) '取接近值

 

Dim Jarr1, Jarr2

 

Dim x

 

 Jarr1 = R1

 

 Jarr2 = R2

 

 

 

For x = 1 To UBound(Jarr1)

 

  If x + 1 > UBound(Jarr1) Then

 

       JS = Jarr2(x, 1)

 

       Exit Function

 

  ElseIf J1 >= Jarr1(x, 1) And J1 < Jarr1(x + 1, 1) Then

 

       JS = Jarr2(x, 1)

 

       Exit Function

 

  End If

 

Next x

 

End Function

说实话本人学渣复制的代码请各大神指正一下,希望可以更新一下mlookup这个老函数



我的个性签名
发表于 2021/12/22 13:14:55   
头像 等级:传说级人物
积分:2577
财富值:1863
身份:普通用户
好的,感谢反馈
我的个性签名

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。